#!/bin/sh

# Warn if still in a venv
if [ -n "$VIRTUAL_ENV" ]; then
    echo "The current venv is still active! Run 'deactivate' first!"
    exit 1
fi

python_versions=""
for dir in $(echo "$PATH" | tr ':' ' '); do
    for version in "$dir"/python3.[0-9]*; do
        if [ -e "$version" ]; then
            # Check if executable
            if [ -x "$version" ] && "$version" --version >/dev/null 2>&1; then
                python_versions="$python_versions $version"
            fi
        fi
    done
done

if [ -z "$python_versions" ]; then
    echo "No Python3 versions found."
    exit 1
fi

# Remove duplicates
python_versions=$(echo "$python_versions" | tr ' ' '\n' | sort -u -rV | tr '\n' ' ')

echo "Installed Python3 versions:"
i=1
highest_version=""
for version in $python_versions; do
    if [ $i -eq 1 ]; then
        highest_version=$(basename "$version")
        echo "$i) $(basename "$version") (default)"
    else
        echo "$i) $(basename "$version")"
    fi
    i=$((i + 1))
done

echo "Select the number of the Python version you want to use:"
read user_choice

# Enter -> default
if [ -z "$user_choice" ]; then
    user_choice=1
fi

# Check if int
if echo "$user_choice" | grep -qE '^[0-9]+$'; then
    i=1
    for version in $python_versions; do
        if [ "$i" -eq "$user_choice" ]; then
            python_version=$(basename "$version")
            break
        fi
        i=$((i + 1))
    done

    # Check if input is valid
    if [ -n "$python_version" ]; then
        echo "You selected: $version"
    else
        echo "Invalid selection."
        exit 1
    fi
else
    echo "Please enter a valid number."
    exit 1
fi

# Additional parameter
additional_parameters="--upgrade-deps --clear"

echo "Should the venv have access to the system packages? (y/n, default=n)"
read -r add_system_packages
add_system_packages=${add_system_packages:-n}
if echo "$add_system_packages" | grep -qi '^[yj]$'; then
    additional_parameters="$additional_parameters --system-site-packages"
fi

echo "Creating venv..."
$version -m venv venv $additional_parameters
source ./venv/bin/activate
echo "Finished!\n"

if [ -e requirements.txt ]; then
    echo "Install packages from requirements.txt? (y/n, default=y)"
    read -r install_requirements_txt
    install_requirements_txt=${install_requirements_txt:-y}
    if echo "$install_requirements_txt" | grep -qi '^[yj]$'; then
        python3 -m pip install -r requirements.txt
    fi
fi
