#!/bin/bash

# Copyright (c) 2012 Wind River Systems, Inc.
# The right to copy, distribute, modify, or otherwise
# make use of this software may be licensed only pursuant
# to the terms of an applicable Wind River license agreement.

declare SMART=`which smart`
if [[ ! -e "$SMART" ]]; then
    echo "Error: Required: smart -- Not found!"
    exit 1
fi

declare REPO_PARSER=`which xml_parse`
if [[ ! -e "$REPO_PARSER" ]] ; then
    echo "Error: Required: xml_parse -- Not found!"
    exit 1
fi

source /usr/bin/common.sh
source /usr/bin/pkg_mgt.sh
source /usr/bin/repo_mgt.sh

[[ $# -eq 0 ]] && {
    usage;
    exit 1
}

declare default_wr_updt_lock="/var/lib/wr-updt/.lock"
[[ -e $default_wr_updt_lock ]] && {
    echo "$default_wr_updt_lock exists, wr-updt is already running!"
    echo "please wait until it finishes, or kill it and remove the lock file to start another instance!"
    exit 1
} || touch $default_wr_updt_lock

[[ ! -d $default_lib_path ]] && exec_cmd "mkdir $default_lib_path" || {
    exec_cmd "rm -rf $default_lib_path/.cmd_output*"
    exec_cmd "rm -rf $default_updt_xml_lock"
}

declare flag_OnlineUpdt=1
declare verbose=0
unset args

tmpOpt=$1
case $tmpOpt in
"sync")
        [[ $# -eq 1 ]] && repo_sync
        [[ $# -eq 2 ]] && { 
            shift
            [[ $1 == "--verbose" ]] && {
                verbose=1
                shift
            } || {
                echo $1 | grep "\-\-flag=" > /dev/null 2>&1
                [[ $? -eq 0 ]] && {
                    tmp_flag=`echo $1 | awk -F'=' '{print $2}'`
                    [[ $tmp_flag -gt 0 && $tmp_flag -lt 7 ]] && flag_OnlineUpdt=$tmp_flag
                    shift
                }
            }
            repo_sync "$@"
        }
        [[ $# -gt 2 ]] && {
            shift
            for arg in "$@"; do
                [[ $arg == "--verbose" ]] && verbose=1 || {
                    echo $arg | grep "\-\-flag=" > /dev/null 2>&1
                    [[ $? -eq 0 ]] && {
                        tmp_flag=`echo $arg | awk -F'=' '{print $2}'`
                        [[ $tmp_flag -gt 0 && $tmp_flag -lt 7 ]] && flag_OnlineUpdt=$tmp_flag 
                    } || args=${args}${arg}" "
                }
                shift
            done
            repo_sync $args
        }
        ;;
"showrepo")
        shift
        repo_list=("$@")
        get_repo_info ${repo_list[@]}
        ;;
"addrepo")
        shift
        args=("$@")
        add_repo_md ${args[@]}
        ;;
"delrepo")
        shift
        repo_list=("$@")
        del_repo ${repo_list[@]}
        ;;
"setrepo")
        shift
        set_repo_property "$@"
        ;;
"updtrepo")
        shift
        verbose=1
        repo_list=("$@")
        updt_repo ${repo_list[@]}
        ;;
"download")
        shift
        pkg_download_wrapper "$@"
        ;;
"query")
        shift
        pkg_query_wrapper "$@"
        ;;
"install")
        shift
        pkg_install_wrapper "$@"
        ;;
"reinstall")
        shift
        pkg_reinstall_wrapper "$@"
        ;;
"upgrade")
        shift
        pkg_upgrade_wrapper "$@"
        ;;
"remove")
        shift
        pkg_remove_wrapper "$@"
        ;;
*)
        echo "Invalid options!"
        usage
        exec_cmd "rm -rf $default_wr_updt_lock"
        exit 1;;
esac

exec_cmd "rm -rf $default_wr_updt_lock"

exit 0
