# shellcheck shell=dash disable=SC2034

xrc cfgy
___x_cmd_links_cfg(){
    [ "$#" -gt 0 ] || {
        ___x_cmd_links_init
        return
    }

    local op="$1"; shift
    case "$op" in
        -h|--help)      ___x_cmd help -m links --cfg ;;
        *=*)            ___x_cmd_links_cfg___invoke "$op" "$@"
                        ;;
        def_)           ___x_cmd_links_def_ "$@" ;;
        *)              ___x_cmd_links_cfg___invoke "$op" "$@" ;;
    esac
}

___x_cmd_links_def_(){
    local op="$1";
    case "$op" in
        model)      x_="$___X_CMD_LINKS_DEFAULT_FIRST_MODEL" ;;
        endpoint)   x_="$___X_CMD_LINKS_DEFAULT_ENDPOINT" ;;
        *) ;;
    esac
}


___x_cmd_links_cur(){
    local X_help_cmd=; X_help_cmd='___x_cmd help -m links --cur' help:arg:parse
    ___x_cmd_links_cfg --current "$@"
}

___x_cmd_links_init(){
    local cur_timeout=; local cur_proxy=;

    if [ -f "$(___x_cmd_links_cur --get config)" ]; then
        ___x_cmd_links_cur cur_timeout:=timeout cur_proxy:=proxy 2>/dev/null
    fi

    ___x_cmd_links_cfg___invoke --init ${cur_timeout:+"--ctrl_exit_strategy"} \
        timeout     "Timeout"                        \
                    "${cur_timeout:-"10"}" --                             \
        proxy       "Set up the network proxy for API requests (optional)"    \
                    "$cur_proxy" '=~'    "^([a-z0-9]+://)?[0-9.:]+$" --
}

___X_CMD_LINKS_CFG_VARLIST="timeout,model,maxtoken,temperature,seed,proxy,endpoint"
___x_cmd_links_cfg___invoke(){
    ___x_cmd_cfgy_obj                                              \
        --prefix            ___X_CMD_LINKS_CFG_DATA                \
        --default-config    "${___X_CMD_ROOT_CFG}/links/X.cfg.yml" \
        --current-config    "${___X_CMD_LINKS_LOCAL_CONFIG}"       \
        --current-profile   "${___X_CMD_LINKS_LOCAL_PROFILE}"      \
        --varlist           "$___X_CMD_LINKS_CFG_VARLIST"          \
        "$@"
}

