#!/bin/bash

# make sure script is being run as source
if [ "${BASH_SOURCE[0]}" == "${0}" ]; then
    echo "[-] You must source this script to run it."
    exit
fi

########################################

# make sure environment variables exist
if [ -z "$VENVDIR" ]; then
    echo "[!] Must define '\$VENVDIR' as environment variable (default ~/.venvs/)."
fi

if [ -z "$WORKDIR" ]; then
    echo "[!] Must define '\$WORKDIR' as environment variable."
fi

if [ -z "$VENVLABEL" ]; then
    echo "[!] Must define '\$VENVLABEL' as environment variable (default 'venv.txt')."
fi

if [ -z "$VENVDIR" ] || [ -z "$WORKDIR" ] || [ -z "$VENVLABEL" ]; then
    return
fi

########################################

if [ $# -eq 0 ]; then
    ls $WORKDIR
    return
fi

if [ $# -ne 1 ]; then
    echo "[-] Takes one (1) argument:"
    echo "    <name> = name of project to work on (in '$WORKDIR')"
    return
fi

proj=$WORKDIR/$1

if [ ! -d $proj ]; then
    echo "[-] Project directory '$proj' does not exist."
    return
fi

if [ ! -f $proj/$VENVLABEL ]; then
    echo "[-] '$VENVLABEL' file does not exist in '$proj'"
    return
fi

name=`cat $proj/$VENVLABEL`
venv=$VENVDIR/$name

if [[ ! -d $venv ]]; then
    echo "[-] Venv '$name' not found in '$VENVDIR'"
    return
fi

echo "[ ] Moving to project..." \
&& cd $proj \
&& echo "[ ] Activating virtualenv..." \
&& . $venv/bin/activate \
&& echo "[+] Now working on '$name' venv." \
|| (echo "[-] Something went wrong -- permissions error?" && return)

echo "[ ] Opening project..." \
&& open -a "Sublime Text" . \
&& echo "[+] Project opened in Sublime Text." \
|| (echo "[-] Opening folder failed!  Application error?" && return)
