# -*-shell-script-*-

unameOut="$(uname -s)"
case "${unameOut}" in
    Linux*)     BIN_DIR=bin;;
    Darwin*)    BIN_DIR=bin;;
    *)          BIN_DIR=Scripts
esac

_guild_env="$1"
if [ -z "$_guild_env" ]; then
    if [ -e "${BIN_DIR}/activate" ]; then
        _guild_env=.
    elif [ -e "venv/${BIN_DIR}/activate" ]; then
        _guild_env=./venv
    elif [ -e "env/${BIN_DIR}/activate" ]; then
        _guild_env=./env
    elif [ -e "env/Scripts/activate" ]; then
        _guild_env=./env
    else
        echo "guild-env: cannot find a Guild environment in the current directory"
        echo "Try 'source guild-env PATH'."
        return 1
    fi
fi

if [ ! -e "$_guild_env" ]; then
    echo "guild-env: Guild environment $_guild_env does not exist"
    return 1
fi

if [ ! -e "$_guild_env/${BIN_DIR}/activate" -a -e "$_guild_env/venv" ]; then
    _guild_env="$_guild_env/venv"
fi

if [ -e "$_guild_env/${BIN_DIR}/activate" ]; then
    . "$_guild_env/${BIN_DIR}/activate"
    if [ -z "$QUIET" ]; then
        echo "$VIRTUAL_ENV is active"
        echo
        echo "To deactivate the environment, run:"
        echo
        echo "  deactivate"
        echo
        echo "Common commands:"
        echo
        echo "  guild check   Check the environment"
        echo "  guild ops     List available operations"
        echo "  guild runs    List runs"
        echo "  guild run     Run an operation"
        echo "  guild --help  Show Guild help"
        echo
    fi
else
    echo "guild-env: cannot find a Guild environment in $_guild_env"
    return 1
fi
