#!/bin/sh

# Single point of source for all AppSupport paths.

# Default instance
DEFAULT_CONTAINER_NAME="aliendalvik"
DEFAULT_CONFIG_PATH="/tmp/appsupport"
DEFAULT_DATA_ROOT="/home/.android"

AAS_CONFIG="/etc/aas-config"

# Get Appsupport variable
# 1. if env has variable exported, use that value
# 2. if /etc/aas-config has the variable, use that value
# 3. last if no value found use the AAS_DEFAULT
get_aas_var() {
    local AAS_VAR="$1"
    local AAS_DEFAULT="$2"
    local REPLY=

    REPLY="$(eval echo "\$$AAS_VAR")"

    if [ -z "$REPLY" ] && [ -f "$AAS_CONFIG" ]; then
        REPLY="$(grep $AAS_VAR $AAS_CONFIG | cut -d'=' -f2)"
        if [ -z "$REPLY" ]; then
            REPLY="$AAS_DEFAULT"
        fi
    elif [ -z "$REPLY" ]; then
        REPLY="$AAS_DEFAULT"
    fi

    echo -n "$REPLY"
}

CONTAINER_NAME="$DEFAULT_CONTAINER_NAME"

AAS_CONFIG_BASE_PATH="$(get_aas_var AAS_CONFIG_BASE_PATH "$DEFAULT_CONFIG_PATH")"

DO_PRINT=
SET_INSTANCE=0

while [ $# -gt 0 ]; do
    case $1 in
        --help|-h)
            echo "Usage: $0 <option>"
            echo ""
            echo "  --config    -c      Config file for the instance."
            echo "  --path      -p      Config path for the instance."
            echo "  --lxc-path  -l      Global LXC path."
            echo "  --data      -d      Data root."
            echo "  --name      -n      Name of the container."
            echo "  --control   -o      Control file for container."
            echo "  --instance  -i      Use instance ($DEFAULT_CONTAINER_NAME-<instance>)"
            echo ""
            exit 0
            ;;
        --config|-c)
            DO_PRINT=config
            SET_INSTANCE=0
            ;;
        --path|-p)
            DO_PRINT=path
            SET_INSTANCE=0
            ;;
        --lxc-path|-l)
            echo "$AAS_CONFIG_BASE_PATH"
            exit 0
            ;;
        --data|-d)
            echo "$(get_aas_var ANDROID_DATA_ROOT "$DEFAULT_DATA_ROOT")"
            exit 0
            ;;
        --name|-n)
            DO_PRINT=name
            SET_INSTANCE=0
            ;;
        --control|-o)
            DO_PRINT=control
            SET_INSTANCE=0
            ;;
        --instance|-i)
            SET_INSTANCE=1
            ;;
        -*)
            echo "Invalid argument: $1" >&2
            exit 1
            ;;
        *)
            if [ $SET_INSTANCE -eq 1 ]; then
                CONTAINER_NAME="${DEFAULT_CONTAINER_NAME}-$1"
                SET_INSTANCE=2
            else
                echo "Invalid arguments." >&2
                exit 1
            fi
    esac

    shift
done

case $DO_PRINT in
    config)
        echo "$AAS_CONFIG_BASE_PATH/$CONTAINER_NAME/config"
        exit 0
        ;;
    path)
        echo "$AAS_CONFIG_BASE_PATH/$CONTAINER_NAME"
        exit 0
        ;;
    name)
        echo "$CONTAINER_NAME"
        exit 0
        ;;
    control)
        echo "$AAS_CONFIG_BASE_PATH/$CONTAINER_NAME/control"
        exit 0
        ;;
esac

echo "Invalid arguments." >&2
exit 1
