#!/bin/sh

PYTHON_VERSION=3.8.2
DOTS=$(dirname "$0")/..
cd "$DOTS" || (echo "Directory not found: $DOTS"; exit 1)
DOTS="$PWD"

check_for_pyenv() {
    if ! (which pyenv > /dev/null)
    then
        echo ""
        echo "pyenv not found"
        if ! (/usr/local/bin/brew list | grep pyenv > /dev/null)
        then
            echo "pyenv not installed, run: bootstrap"
            echo ""
        else
            echo "pyenv is installed, run: setup_symlinks (and restart)"
            echo ""
        fi
        exit 1
    fi
    echo "pyenv ✓"
}

setup_python() {
    /usr/local/bin/pyenv install $PYTHON_VERSION --skip-existing
    /usr/local/bin/pyenv global $PYTHON_VERSION

    echo "python $PYTHON_VERSION ✓"
}

setup_python_envs() {
    for dir in "$DOTS"/python/*/
    do
        dir=${dir%*/}
        envname=$(basename "$dir")
        if ! (/usr/local/bin/pyenv versions | grep -w "$envname" > /dev/null)
        then
            /usr/local/bin/pyenv virtualenv "$PYTHON_VERSION" "$envname" > /dev/null
        fi
        # shellcheck source=/dev/null
        . "$HOME/.pyenv/versions/$envname/bin/activate"
        pip install --upgrade pip > /dev/null
        pip install -r "$dir/requirements.txt" > /dev/null
        deactivate
        echo " - venv: $envname ✓"
    done
}

check_for_pyenv
setup_python
setup_python_envs