#!/usr/bin/env bash


# check below if VIRTUAL_ENV is set
if [ -z "$VIRTUAL_ENV" ]; then  # no active ve ==> activate one.
  if [ -z "$1" ]; then  # nothing passed, activate default
    if [ -f ~/.machineconfig/default_ve ]; then  # check if there is a default ve stored in ~/.machineconfog/default_ve
      name=$(cat ~/.machineconfig/default_ve)  # if yes, use it
      source $name/bin/activate
    else  # no default ve found, using ve and setting it as default
      name="ve"
      source ~/venvs/$name/bin/activate
      mkdir ~/.machineconfig || true
      if [ -n "$VIRTUAL_ENV" ]; then
        echo $VIRTUAL_ENV > ~/.machineconfig/default_ve
     else
        echo "No virtual environment active, cant echo it to ~/.machineconfig/default_ve"
      fi
    fi
  else
    name=$1
    source ~/venvs/$name/bin/activate
  fi

  if [ $? -eq 0 ]; then
    echo "✅ Activated virtual environment $VIRTUAL_ENV "
  fi

else
  # check if $1 is passed, if yes, activate it
  if [ -n "$1" ]; then
    echo "Deactivating virtual environment $VIRTUAL_ENV "
    deactivate
    name=$1
    source ~/venvs/$name/bin/activate

    if [ $? -eq 0 ]; then
      echo "✅ Activated virtual environment $VIRTUAL_ENV "
    fi

  else
    echo "Virtual environment $VIRTUAL_ENV already active"
  fi

  # check if default is not defined, if so, define it as $VIRTUAL_ENV
  if [ ! -f ~/.machineconfig/default_ve ]; then
    mkdir ~/.machineconfig || true
    if [ -n "$VIRTUAL_ENV" ]; then
      echo $VIRTUAL_ENV > ~/.machineconfig/default_ve
    else
      echo "No virtual environment active, cannot echo it to ~/.machineconfig/default_ve"
    fi
  fi
fi

