
___x_cmd_xgo___runmain(){
    case "$1" in
        u-*)     ___x_cmd_go___runcmd_hub "$@"; return ;;
    esac
    ___x_cmd_xgo___runcmd "$@"
}

___x_cmd_xgo___runcmd(){
    ___x_cmd_hascmd go || {
        ___x_cmd env try go || {
            local err=$?
            N=xgo M="Fail to prepare go for xgo. Exit code -> $err" log:ret:64
            return 1
        }
    }

    # then just using xgo
    ___x_cmd_hascmd xgo || {
        ___x_cmd env try xgo || {
            local err=$?
            N=xgo M="Fail to prepare xgo. Exit Code -> $err" log:ret:64
            return 1
        }
    }

    ___x_cmd_cmds xgo "$@"
}

___x_cmd_xgo___runcmd_hub(){
    local ___X_CMD_XGO_WHICHFILE=
    local x_=
    ___x_cmd_xgo___setarg_ "$@" || return
    xgo:debug "cmd x_ ==> $x_"
    [ -z "$x_" ] || eval "$x_"
    xgo:debug "Args ==> $*"
    ___x_cmd_xgo___runcmd run "$@"
}



