Files
heroku-buildpack-python/bin/steps/pipenv
T
2018-03-07 10:54:09 -05:00

68 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# export CLINT_FORCE_COLOR=1
# export PIPENV_FORCE_COLOR=1
# shellcheck source=bin/utils
source $BIN_DIR/utils
set -e
if [[ -f Pipfile.lock ]]; then
if [[ -f .heroku/python/Pipfile.lock.sha256 ]]; then
if [[ $(openssl dgst -sha256 Pipfile.lock) == $(cat .heroku/python/Pipfile.lock.sha256) ]]; then
if [[ ! "$PIPENV_ALWAYS_INSTALL" ]]; then
echo "Skipping installation, as Pipfile.lock hasn't changed since last deploy." | indent
echo "To disable this functionality, run the following command:"
echo ""
echo " $ heroku config:set PIPENV_ALWAYS_INSTALL=1" | indent
export SKIP_PIPENV_INSTALL=1
fi
fi
fi
fi
if [ ! "$SKIP_PIPENV_INSTALL" ]; then
# Pipenv support (Generate requriements.txt with pipenv).
if [[ -f Pipfile ]]; then
# Measure that we're using Pipenv.
mcount "tool.pipenv"
# Skip pip install, later.
export SKIP_PIP_INSTALL=1
# Set PIP_EXTRA_INDEX_URL
if [[ -r $ENV_DIR/PIP_EXTRA_INDEX_URL ]]; then
PIP_EXTRA_INDEX_URL="$(cat "$ENV_DIR/PIP_EXTRA_INDEX_URL")"
export PIP_EXTRA_INDEX_URL
fi
# Install pipenv.
/app/.heroku/python/bin/pip install pipenv --upgrade &> /dev/null
# Install the dependencies.
if [[ ! -f Pipfile.lock ]]; then
puts-step "Installing dependencies with latest Pipenv…"
/app/.heroku/python/bin/pipenv install --system --skip-lock 2>&1 | indent
else
pipenv-to-pip Pipfile.lock > requirements.txt
"$BIN_DIR/steps/pip-uninstall"
cp requirements.txt .heroku/python/requirements-declared.txt
openssl dgst -sha256 Pipfile.lock > .heroku/python/Pipfile.lock.sha256
puts-step "Installing dependencies with latest Pipenv…"
/app/.heroku/python/bin/pipenv install --system --deploy 2>&1 | indent
fi
# Install the test dependencies, for CI.
if [ "$INSTALL_TEST" ]; then
puts-step "Installing test dependencies…"
/app/.heroku/python/bin/pipenv install --dev --system --deploy 2>&1 | cleanup | indent
fi
fi
else
pipenv-to-pip Pipfile.lock > requirements.txt
export SKIP_PIP_INSTALL=1
fi