# shellcheck shell=dash

# O="brew"
___x_cmd_proxy_wrap(){
    [ -n "$O" ]     ||  N=proxy M="Expected env O" log:ret:64
    [ $# -gt 0 ]    ||  set - ls
    local op="$1";      shift
    case "$op" in
        ls|use|unuse|try|untry|run|get_)
                        ___x_cmd_proxy_wrap___"$op"   "$@" ;;  # In the future, we will put the mirror code here ...

        -h|--help)      ___x_cmd help -m proxy wrap          "$@" ;;
    esac
}

___x_cmd_proxy_wrap___get_(){
    x_=

    [ -z "$___X_CMD_PROXY_STR" ] || {
        x_="$___X_CMD_PROXY_STR"
        return
    }

    [ ! -f "$___X_CMD_PROXY_WRAP_DIR/$O.use.yml" ] || {
        ___x_cmd rat_ "$___X_CMD_PROXY_WRAP_DIR/$O.use.yml"
        return
    }

    return 1
}

___x_cmd_proxy_wrap___ls(){
    local fp="$___X_CMD_PROXY_WRAP_DIR/$O.use.yml"
    [ -f "$fp" ] || return $?
    ___x_cmd rat "$fp"
}

___x_cmd_proxy_wrap___run(){
    local x_
    ___x_cmd_proxy_wrap___get_ || true
    ___x_cmd_proxy___str_load_ "$x_"

    if [ -z "$x_" ]; then
        "$@"
    else
        eval ___x_cmd_proxy_run "$x_" -- \"\$@\"
    fi
}

___X_CMD_PROXY_WRAP_DIR="$___X_CMD_ROOT_DATA/proxy/wrap"

# x proxy wrap use 
___x_cmd_proxy_wrap___use(){
    ___x_cmd ensurefp "$___X_CMD_PROXY_WRAP_DIR/$O.use.yml"
    local x_
    ___x_cmd_proxy___str_dump_ "$@"
    printf "%s\n" "$x_" >"$___X_CMD_PROXY_WRAP_DIR/$O.use.yml"
}

___x_cmd_proxy_wrap___unuse(){
    ___x_cmd rmrf "$___X_CMD_PROXY_WRAP_DIR/$O.use.yml"
}

___x_cmd_proxy_wrap___try(){
    local x_
    ___x_cmd_proxy___str_dump_ "$@"
    ___X_CMD_PROXY_STR="$x_"
}

___x_cmd_proxy_wrap___untry(){
    ___X_CMD_PROXY_STR=
}
