#!/usr/bin/env bash line_sep="===============================" cur_dir="$(cd "$( dirname "$0")" && pwd)" proj_dir="$(cd "$(dirname "$cur_dir")" && pwd)" init_venv_script="$proj_dir/scripts/init_venv.sh" venv_activate_path="$proj_dir/venv/bin/activate" check_python_dev_script="$proj_dir/scripts/check_py_dev.py" render_docker_compose_template_script="$proj_dir/docker/bin/render_docker_templates.sh" python="python3.9" # is python 3.9 installed? if ! command -v $python &> /dev/null; then echo "$line_sep" echo "Installing python 3.9..." echo "$line_sep" # fail if something goes wrong sudo apt-get install python3.9 python3.9-dev || (echo "Failed to install python3.9" && exit 1) echo "$line_sep" echo "Installed python 3.9" echo "$line_sep" fi # is python dev installed? if ! command -v "$check_python_dev_script" &> /dev/null; then echo "python3.9-dev already installed" # install python3.9-dev else echo "Installing python3.9-dev..." sudo apt-get install python3.9-dev || (echo "Failed to install python3.9-dev" && exit 1) echo "$line_sep" echo "Installed python 3.9-dev" echo "$line_sep" fi # is pip installed? if [[ $(python3.9 -m pip 2>&1) == *"No module named pip" ]]; then echo "Installing python3 pip..." curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py || (echo "Failed to download get-pip.py" && exit 1) $python /tmp/get-pip.py || (echo "get-pip.py failed to run" && exit 1) fi # make sure that the virtualenv package is installed virtualenv_exists="$($python -m pip list | grep -F "virtualenv" | xargs)" virtualenv_exists=${#virtualenv_exists} # if the python virtualenv package in not installed, install it if [[ "$virtualenv_exists" -eq 0 ]]; then echo "$line_sep" echo "Installing python virtualenv..." echo "$line_sep" $python -m pip install virtualenv echo "$line_sep" echo "Installed python virtualenv" echo "$line_sep" fi echo " $line_sep Creating python virtual environment $line_sep" $init_venv_script || (echo "Failed to create virtual environment. Is python3.9-dev installed?" && exit 1) echo " $line_sep Done creating python virtual environment $line_sep $line_sep Activating the python virtual environment $line_sep" source "$venv_activate_path" || (echo "Failed to source the python virtual environment" && exit 1) echo " $line_sep Python virtual environment activated $line_sep $line_sep Rendering the docker compose template $line_sep" $render_docker_compose_template_script || (echo "Failed to render the docker compose file" && exit 1) echo " $line_sep Rendered the docker compose file $line_sep Done!"