Files
sentinel/scripts/bootstrap-py3-venv
2024-02-15 17:01:50 +00:00

77 lines
1.9 KiB
Plaintext

# This script is meant to be sourced by bash, not executed.
# As such, don't use exit, use return.
# This script is purely a python virtualenv bootstrap, not the entire development environment.
# For the entire thing, you should still use make bootstrap.
# Eventually, the goal would be to have an idempotent single script that does
# everything make bootstrap does and more (system dependencies and so on).
# So just going to sprinkle returns everywhere.
SCRIPTS_DIR="$(
cd "$(dirname "${BASH_SOURCE[0]}")"
pwd -P
)"
source "${SCRIPTS_DIR}/lib.sh"
configure-sentry-cli
command -v pyenv >/dev/null || {
echo "You need to install pyenv. https://develop.sentry.dev/environment/#python"
return 1
}
command -v direnv >/dev/null || {
echo "You need to install direnv. https://develop.sentry.dev/environment/#direnv"
return 1
}
# This executes very quickly if the Python versions are already installed
# This calling approach activates pyenv correctly -> eval "$(pyenv init --path)"
. "$SCRIPTS_DIR/pyenv_setup.sh"
venv_name="${PWD}/.venv"
if [[ -f "${venv_name}/bin/activate" ]]; then
echo "You have an existing virtualenv. This script will OVERWRITE it. Continue (y/N)?"
read resp
case "$resp" in
y | Y) echo "Okay, let's do this." ;;
*)
echo "Aborted!"
return 1
;;
esac
fi
deactivate 2>/dev/null || true
rm -rf "$venv_name"
if [ -z "${SENTRY_PYTHON_VERSION-}" ] && ! query-valid-python-version; then
echo "Your python3 version isn't as expected. Please run: make setup-pyenv"
return 1
fi
python3 -m venv "${venv_name}" || {
echo "bootstrap failed!"
return 1
}
source "${venv_name}/bin/activate" || {
echo "bootstrap failed!"
return 1
}
make install-py-dev || {
echo "bootstrap failed!"
return 1
}
make setup-git || {
echo "bootstrap failed!"
return 1
}
deactivate || {
echo "bootstrap failed!"
return 1
}
direnv allow || {
echo "bootstrap failed!"
return 1
}