#!/usr/bin/env bash # Use this script to provision dependencies for your Zulip installation. # This script is idempotent, so it can be restarted at any time, and it # will usually run fairly quickly when your dependencies are up to date. set -e if [ "$EUID" -eq 0 ]; then echo "Error: The provision script must not be run as root" >&2 exit 1 fi FAIL='\033[91m' WARNING='\033[93m' ENDC='\033[0m' # Make the script independent of the location from where it is executed PARENT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) cd "$PARENT_PATH" mkdir -p ../var/log LOG_PATH="../var/log/provision.log" echo "PROVISIONING STARTING." >> $LOG_PATH # PYTHONUNBUFFERED is important to ensure that tracebacks don't get # lost far above where they should be in the output. export PYTHONUNBUFFERED=1 ./lib/provision.py "$@" 2>&1 | tee -a "$LOG_PATH" failed=${PIPESTATUS[0]} if [ "$failed" -ne 0 ]; then echo -e "$FAIL" echo "Provisioning failed (exit code $failed)!" echo echo "* Look at the traceback(s) above to find more about the errors." echo "* Resolve the errors or get help on chat." echo "* If you can fix this yourself, you can re-run tools/provision at any time." echo "* Logs are here: zulip/var/log/provision.log" echo -e "$ENDC" exit "$failed" elif [ "$VIRTUAL_ENV" != "/srv/zulip-py3-venv" ] && [ -z "${TRAVIS}${SKIP_VENV_SHELL_WARNING}" ]; then echo -e "$WARNING" echo "WARNING: This shell does not have the Zulip Python 3 virtualenv activated." echo "Zulip commands will fail until you activate the virtualenv." echo echo "To update the shell, run:" echo " source /srv/zulip-py3-venv/bin/activate" # shellcheck disable=SC2016 echo 'or just close this shell and start a new one (with Vagrant, `vagrant ssh`).' echo -en "$ENDC" fi exit 0