# shellcheck shell=dash

___x_cmd log init cfgy

xrc envy
xrc:mod:lib     cfgy        inner/index obj/main
! ___x_cmd_is_suitable_advise_env || xrc:mod:lib cfgy advise

___x_cmd_cfgy___main(){
    [ "$#" -gt 0 ] || {
        ___x_cmd_cfgy_help >&2
        return 64
    }

    local op="$1"; shift
    case "$op" in
        obj|inner)
            ___x_cmd_cfgy_"$op" "$@"
            ;;
        demo)
            # shellcheck disable=SC2154,SC2034
            ___x_cmd_cfgy_obj \
                --prefix            ___X_CMD_CFGY_CFG_DATA                  \
                --default-config    "${___X_CMD_ROOT_CFG}/cfgy/X.cfg.yml"   \
                --current-config    "$___X_CMD_CFGY_CURRENT_config"         \
                --current-profile   "$___X_CMD_CFGY_CURRENT_profile"        \
                --varlist           proxy,apikey                            \
                "$@"
            ;;
        -h|--help)
            ___x_cmd_cfgy_help
            ;;
        advise)
            ___x_cmd_is_suitable_advise_env || return $?
            ___x_cmd_cfgy_advise "$@"
            ;;

        # this is for the x ali.proxy=
        # *.*)
        #     local mod="${op%%.*}"
        #     local cmd="${op#*.}"
        #     x "$mod" --cfg --current "$cmd" "$@"
        #     ;;

        # x chat.proxy=127.0.0.1
        # x chat.apikey=asdfasdf

        # x cfg chat apikey=asadfsaf proxy=127.0.0.1
        # x cur chat apikey=asadfsaf proxy=127.0.0.1
        *)
            # check for the module register in config list
            [ "${___X_CMD_CFGY_LIST#*"${___X_CMD_UNSEENCHAR_NEWLINE}${op}${___X_CMD_UNSEENCHAR_NEWLINE}"}" != "$___X_CMD_CFGY_LIST" ] || N=cfgy M="Unknown subcmd $op" log:ret:64
            cfgy:debug -c "x $op --cfg $*" "convert command"
            ___x_cmd "$op" --cfg "$@"
            ;;

    esac
}

xrc ja yml
___x_cmd_cfgy___yml2json_and_tokenize(){
    ___x_cmd_yml_y2j | ___x_cmd_ja_tokenize
}

___x_cmd_cfgy___json2yml(){
    ___x_cmd_yml_j2y
}

# shellcheck disable=SC2120
___x_cmd_cfgy_help(){
    ___x_cmd help -m cfgy "$@"
}

___X_CMD_CFGY_LIST="
gh
gt
gl
gcode
tea
ali
aws
az
jd
chat
hub
qywx
zhipu
openai
bwh
"

