90 lines
2.4 KiB
Bash
Executable file
90 lines
2.4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
function is_django_installed() {
|
|
python -c "import django" &>/dev/null
|
|
}
|
|
|
|
function should_collectstatic() {
|
|
is_django_installed && [[ -z "$DISABLE_COLLECTSTATIC" ]]
|
|
}
|
|
|
|
function virtualenv_bin() {
|
|
if head "/etc/redhat-release" | grep -q "^Fedora"; then
|
|
virtualenv-${PYTHON_VERSION} $1
|
|
else
|
|
virtualenv $1
|
|
fi
|
|
}
|
|
|
|
# Install pipenv to the separate virtualenv to isolate it
|
|
# from system Python packages and packages in the main
|
|
# virtualenv. Executable is simlinked into ~/.local/bin
|
|
# to be accessible. This approach is inspired by pipsi
|
|
# (pip script installer).
|
|
function install_pipenv() {
|
|
echo "---> Installing pipenv packaging tool ..."
|
|
VENV_DIR=$HOME/.local/venvs/pipenv
|
|
virtualenv_bin "$VENV_DIR"
|
|
$VENV_DIR/bin/pip --isolated install -U pipenv
|
|
mkdir -p $HOME/.local/bin
|
|
ln -s $VENV_DIR/bin/pipenv $HOME/.local/bin/pipenv
|
|
}
|
|
|
|
set -e
|
|
|
|
shopt -s dotglob
|
|
echo "---> Installing application source ..."
|
|
mv /tmp/src/* ./
|
|
|
|
if [[ ! -z "$UPGRADE_PIP_TO_LATEST" ]]; then
|
|
echo "---> Upgrading pip to latest version ..."
|
|
pip install -U pip setuptools wheel
|
|
fi
|
|
|
|
if [[ ! -z "$ENABLE_PIPENV" ]]; then
|
|
install_pipenv
|
|
echo "---> Installing dependencies via pipenv ..."
|
|
if [[ -f Pipfile ]]; then
|
|
pipenv install --deploy
|
|
elif [[ -f requirements.txt ]]; then
|
|
pipenv install -r requirements.txt
|
|
fi
|
|
# pipenv check
|
|
elif [[ -f requirements.txt ]]; then
|
|
echo "---> Installing dependencies ..."
|
|
pip install -r requirements.txt
|
|
fi
|
|
|
|
if [[ -f setup.py && -z "$DISABLE_SETUP_PY_PROCESSING" ]]; then
|
|
echo "---> Installing application ..."
|
|
pip install .
|
|
fi
|
|
|
|
if should_collectstatic; then
|
|
(
|
|
echo "---> Collecting Django static files ..."
|
|
|
|
|
|
APP_HOME=${APP_HOME:-.}
|
|
# Look for 'manage.py' in the directory specified by APP_HOME, or the current directory
|
|
manage_file=$APP_HOME/manage.py
|
|
|
|
if [[ ! -f "$manage_file" ]]; then
|
|
echo "WARNING: seems that you're using Django, but we could not find a 'manage.py' file."
|
|
echo "'manage.py collectstatic' ignored."
|
|
exit
|
|
fi
|
|
|
|
if ! python $manage_file collectstatic --dry-run --noinput &> /dev/null; then
|
|
echo "WARNING: could not run 'manage.py collectstatic'. To debug, run:"
|
|
echo " $ python $manage_file collectstatic --noinput"
|
|
echo "Ignore this warning if you're not serving static files with Django."
|
|
exit
|
|
fi
|
|
|
|
python $manage_file collectstatic --noinput
|
|
)
|
|
fi
|
|
|
|
# set permissions for any installed artifacts
|
|
fix-permissions /opt/app-root
|