2019-06-28 12:36:06 +03:00
#!/bin/sh
set -ue
requirements_in = " $( readlink -f ./requirements.in) "
requirements = " $( readlink -f ./requirements.txt) "
2020-10-22 17:56:26 +03:00
requirements_git = " $( readlink -f ./requirements_git.txt) "
2019-06-28 12:36:06 +03:00
pip_compile = "pip-compile --no-header --quiet -r --allow-unsafe"
_cleanup( ) {
cd /
test " ${ KEEP_TMP :- 0 } " = 1 || rm -rf " ${ _tmp } "
}
2021-03-11 16:43:49 +03:00
generate_requirements( ) {
venv = "`pwd`/venv"
echo $venv
2022-01-29 01:30:42 +03:00
/usr/bin/python3 -m venv " ${ venv } "
2019-06-28 12:36:06 +03:00
# shellcheck disable=SC1090
2021-03-11 16:43:49 +03:00
source ${ venv } /bin/activate
2019-06-28 12:36:06 +03:00
2022-01-31 19:40:00 +03:00
# FIXME: https://github.com/jazzband/pip-tools/issues/1558
${ venv } /bin/python3 -m pip install -U 'pip<22.0' pip-tools
2019-06-28 12:36:06 +03:00
2022-01-29 01:30:42 +03:00
${ pip_compile } " ${ requirements_in } " " ${ requirements_git } " --output-file requirements.txt
2020-10-22 17:56:26 +03:00
# consider the git requirements for purposes of resolving deps
# Then remove any git+ lines from requirements.txt
2021-10-20 15:01:45 +03:00
while IFS = read -r line; do
2022-01-29 01:30:42 +03:00
if [ [ $line != \# * ] ] ; then # ignore comments
sed -i " \! ${ line %#* } !d " requirements.txt
fi
2021-10-20 15:01:45 +03:00
done < " ${ requirements_git } "
2019-06-28 12:36:06 +03:00
}
main( ) {
2022-05-12 16:25:36 +03:00
base_dir = $( pwd )
2022-11-09 18:15:36 +03:00
_tmp = $( python -c "import tempfile; print(tempfile.mkdtemp(suffix='.awx-requirements', dir='/tmp'))" )
2019-06-28 12:36:06 +03:00
trap _cleanup INT TERM EXIT
2022-11-09 18:15:36 +03:00
case $1 in
"run" )
NEEDS_HELP = 0
; ;
"upgrade" )
NEEDS_HELP = 0
2019-06-28 12:36:06 +03:00
pip_compile = " ${ pip_compile } --upgrade "
2022-11-09 18:15:36 +03:00
; ;
"help" )
NEEDS_HELP = 1
; ;
*)
echo ""
echo " ERROR: Parameter $1 not valid "
echo ""
NEEDS_HELP = 1
; ;
esac
if [ [ " $NEEDS_HELP " = = "1" ] ] ; then
echo "This script generates requirements.txt from requirements.in and requirements_git.in"
echo "It should be run from within the awx container"
echo ""
echo " Usage: $0 [run|upgrade] "
echo ""
echo "Commands:"
echo "help Print this message"
echo "run Run the process only upgrading pinned libraries from requirements.in"
echo "upgrade Upgrade all libraries to latest while respecting pinnings"
echo ""
exit
fi
if [ [ ! -d /awx_devel ] ] ; then
echo "This script should be run inside the awx container"
exit
2019-06-28 12:36:06 +03:00
fi
2021-03-11 16:43:49 +03:00
cp -vf requirements.txt " ${ _tmp } "
2019-06-28 12:36:06 +03:00
cd " ${ _tmp } "
2021-03-11 16:43:49 +03:00
generate_requirements
2019-06-28 12:36:06 +03:00
2022-05-12 16:25:36 +03:00
echo " Changing $base_dir to /awx_devel/requirements "
cat requirements.txt | sed " s: $base_dir :/awx_devel/requirements: " > " ${ requirements } "
2019-06-28 12:36:06 +03:00
_cleanup
}
# set EVAL=1 in case you want to source this script
2020-07-17 00:24:09 +03:00
test " ${ EVAL :- 0 } " -eq "1" || main " ${ 1 :- } "