zulip/tools/update-locked-requirements

71 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
# Make sure the Zulip dev virtualenv exists, and operate within it.
if [ ! -d /srv/zulip-py3-venv ] || [ ! -d /srv/zulip-thumbor-venv ]; then
./tools/setup/setup_venvs.py
fi
compile_requirements () {
source="$1"
output="$2"
python_version="$3"
echo "Compiling $output"
if [ "$python_version" == "py2" ]; then
/srv/zulip-thumbor-venv/bin/pip-compile --quiet --allow-unsafe --generate-hashes --no-header --output-file "$output" "$source"
else
/srv/zulip-py3-venv/bin/pip-compile --quiet --allow-unsafe --generate-hashes --no-header --output-file "$output" "$source"
# Remove an unnecessary future requirement declared by commonmark,
# python-jose, and python-twitter.
# https://github.com/readthedocs/commonmark.py/pull/188
# https://github.com/mpdavis/python-jose/pull/134
# https://github.com/bear/python-twitter/pull/614
sed -i 's/^future==/# &/' "$output"
fi
cat - "$output" <<EOF | sponge "$output"
#
# This file is GENERATED. Don't edit directly.
#
# To update, edit the non-"lock" files in requirements/*.txt, then:
#
# tools/update-locked-requirements
#
# For details, see requirements/README.md .
#
EOF
# Work around https://github.com/jazzband/pip-tools/issues/268
chmod a+r "$output"
}
OUTPUT_BASE_DIR='requirements'
# Parse arguments.
if [ $# -gt 0 ]; then
while [ "$1" != "" ]; do
case $1 in
--output-dir)
shift
OUTPUT_BASE_DIR=$(readlink -m "$1")
;;
*)
echo "Invalid arguments passed."
echo "Usage: $0 [--output-dir <path-to-output-dir>]"
exit
;;
esac
shift
done
fi
compile_requirements requirements/pip.in "$OUTPUT_BASE_DIR/pip.txt"
compile_requirements requirements/prod.in "$OUTPUT_BASE_DIR/prod.txt"
compile_requirements requirements/dev.in "$OUTPUT_BASE_DIR/dev.txt"
compile_requirements requirements/mypy.in "$OUTPUT_BASE_DIR/mypy.txt"
compile_requirements requirements/docs.in "$OUTPUT_BASE_DIR/docs.txt"
compile_requirements requirements/thumbor.in "$OUTPUT_BASE_DIR/thumbor.txt" py2
compile_requirements requirements/thumbor-dev.in "$OUTPUT_BASE_DIR/thumbor-dev.txt" py2