blob: 7dc03b054f7663979e4eb4b11ad51d759b7f1ad3 [file] [log] [blame]
#!/usr/bin/env bash
# This script sets up a Python virtualenv for the Web UI. This creates
# a new virtualenv and installs nodeenv inside the virtualenv.
set -e
trap "exit 1" INT
CURRDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
: ${VIRTUALENV_NAME:="linters"}
: ${VIRTUALENV_DIRECTORY:="${CURRDIR}/.virtualenv"}
: ${PYTHON:="$(which python)"}
: ${VIRTUALENV:="$(which virtualenv)"}
OLD_PYTHONPATH="${PYTHONPATH}"
PYTHONPATH=""
# If we already have a virtual environment activated,
# bail out and advise the user to deactivate.
OLD_VIRTUAL_ENV="${VIRTUAL_ENV}"
if [ "${OLD_VIRTUAL_ENV}" != "" ]; then
echo "Please deactivate your current virtual environment in order to continue."
echo "source deactivate"
exit 1
fi
# Verify that python is installed.
if [ "${PYTHON}" = "" ]; then
echo "You must have python installed in order to continue."
exit 1
fi
# Old versions of virtualenv do not remove the bin directory in the
# virtual environment even when using `--clear`. We thus remove the
# entire directory in case the virtual environment already exists.
# See https://github.com/pypa/virtualenv/issues/2 for more info.
rm -rf ${VIRTUALENV_DIRECTORY}
PYTHON_MAJOR=$(${PYTHON} -c 'import sys; print(sys.version_info[0])')
PYTHON_MINOR=$(${PYTHON} -c 'import sys; print(sys.version_info[1])')
if [ "${PYTHON_MAJOR}" = "3" ]; then
if [ "${PYTHON_MINOR}" -lt "6" ]; then
echo "You must be running python 3.6 or newer in order to continue."
echo "Consider running as 'PYTHON=python3 ${0}' or similar."
exit 1
else
# Set up a virtual environment for the linters.
${PYTHON} -m venv --prompt="${VIRTUALENV_NAME}" ${VIRTUALENV_DIRECTORY}
fi
else
echo "You must be running python 3.6 or newer in order to continue."
echo "Consider running as 'PYTHON=python3 ${0}' or similar."
exit 1
fi
source ${VIRTUALENV_DIRECTORY}/bin/activate
pip install --upgrade pip
pip install -r ${CURRDIR}/pip-requirements.txt
# Add Node.js virtual environment to the existing virtual environment.
nodeenv -p
# Restart the virtual environment to then have npm available.
deactivate
source ${VIRTUALENV_DIRECTORY}/bin/activate
# Install the JavaScript linter in the virtual environment.
npm install -g eslint@5.1.0
deactivate