4 readonly requirements_file
=$1
7 venv_dir
="$(dirname "$requirements_file")"/.venv
9 readonly venv_req
=$venv_dir/requirements.txt
10 readonly venv_python_version
=$venv_dir/python-version.txt
14 if [ ! -r "$venv_python_version" ]
16 echo "Python environment predates Python version checks."
17 echo "It might be invalid and needs to be regenerated."
19 elif ! cmp --quiet <(python
--version) "$venv_python_version"
21 old
=$
(cat "$venv_python_version")
22 new
=$
(python
--version)
23 echo "Python version has changed ($old -> $new)."
24 echo "Python environment needs to be regenerated."
30 if ! [ -r "$venv_dir/bin/activate" ]
32 echo "Creating Python environment..."
33 python
-m venv
"$venv_dir"
34 python
--version > "$venv_python_version"
37 # shellcheck disable=1091
38 source "$venv_dir/bin/activate"
40 if ! cmp --quiet "$requirements_file" "$venv_req"
42 echo "$(realpath --relative-to="$PWD" "$requirements_file") has changed, re-installing..."
43 pip
--disable-pip-version-check install --requirement "$requirements_file"
44 cp "$requirements_file" "$venv_req"