#!/usr/bin/env sh


PARAMS="RA_stage"


function usage()
{
    echo "Usage: nvram [METHOD] param{=value}"
    echo "   eg: nvram get {param}"
    echo "   eg: nvram set {param}={value}"
    echo "   eg: nvram set {param} {value}"
    echo ""
    echo "METHOD"
    echo "    set               Set value"
    echo "    get               Get value"
    echo ""
    echo "param"
    echo "    RA_stage          RAE stage: prod/qa/dev"
    echo ""
}


function get_param_RA_stage()
{
    uci get rae.@rae[0].RaeStage
}


function get_param()
{
    local find=0

    for param in $PARAMS; do
        if [ $param != $1 ]; then
            continue
        fi

        find=1
        eval "get_param_"$param
    done

    if [ $find -eq 0 ]; then
        echo "nvram error: not support param [$1]!"
        exit 1
    fi
}


function set_param_RA_stage()
{
    if [ $1 != "dev" ] && [ $1 != "qa" ] && [ $1 != "prod" ]; then
        echo "nvram error: RA_Stage value must be [dev/qa/prod]!"
        exit 1
    fi

    uci set rae.@rae[0].RaeStage="$1"
    uci commit rae
}


function set_param()
{
    local find=0
    local input_param=""
    local input_value=""

    if echo $1 | grep -q "="; then
        input_param=${1%%=*}
        input_value=${1##*=}
    else
        if [ $# -lt 2 ]; then
            echo "nvram error: missing value!"
            exit 1
        fi

        input_param=$1
        input_value=$2
    fi

    for param in $PARAMS; do
        if [ $input_param != $param ]; then
            continue
        fi

        find=1
        eval "set_param_"$input_param $input_value
    done

    if [ $find -eq 0 ]; then
        echo "nvram error: not support param [$input_param]!"
        exit 1
    fi
}


case $1 in
    get)
        shift
        get_param $@
        ;;
    set)
        shift
        set_param $@
        ;;
    *)
        usage
esac
