1
0
mirror of https://github.com/ansible/awx.git synced 2024-10-27 17:55:10 +03:00
awx/requirements/updater.sh
Jeff Bradberry c5c83a4240 Deal properly with comments in requirements_git.txt
The updater.sh script was expecting that _every_ line in this file was
a repo reference.
2022-01-28 17:30:42 -05:00

53 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
set -ue
requirements_in="$(readlink -f ./requirements.in)"
requirements="$(readlink -f ./requirements.txt)"
requirements_git="$(readlink -f ./requirements_git.txt)"
pip_compile="pip-compile --no-header --quiet -r --allow-unsafe"
_cleanup() {
cd /
test "${KEEP_TMP:-0}" = 1 || rm -rf "${_tmp}"
}
generate_requirements() {
venv="`pwd`/venv"
echo $venv
/usr/bin/python3 -m venv "${venv}"
# shellcheck disable=SC1090
source ${venv}/bin/activate
${venv}/bin/python3 -m pip install -U pip pip-tools
${pip_compile} "${requirements_in}" "${requirements_git}" --output-file requirements.txt
# consider the git requirements for purposes of resolving deps
# Then remove any git+ lines from requirements.txt
while IFS= read -r line; do
if [[ $line != \#* ]]; then # ignore comments
sed -i "\!${line%#*}!d" requirements.txt
fi
done < "${requirements_git}"
}
main() {
_tmp="$(mktemp -d --suffix .awx-requirements XXXX -p /tmp)"
trap _cleanup INT TERM EXIT
if [ "$1" = "upgrade" ]; then
pip_compile="${pip_compile} --upgrade"
fi
cp -vf requirements.txt "${_tmp}"
cd "${_tmp}"
generate_requirements
cp -vf requirements.txt "${requirements}"
_cleanup
}
# set EVAL=1 in case you want to source this script
test "${EVAL:-0}" -eq "1" || main "${1:-}"