# shellcheck shell=bash disable=SC2034,SC2154
# shellcheck disable=SC3043,2034

xrc cfgy
___x_cmd_fjo_cfg(){
    param:void
    [ "$#" -gt 0 ] || {
        _____x_cmd_fjo_help --cfg >&2
        return 64
    }

    local X_help_cmd=; X_help_cmd='x help -m fjo --cfg' help:arg:parse
    ___x_cmd_fjo_cfg___invoke "$@"
}

___x_cmd_fjo_cur(){
    param:void
    local X_help_cmd=; X_help_cmd='x help -m fjo --cur' help:arg:parse
    ___x_cmd_fjo_cfg___invoke --current "$@"
}


___x_cmd_fjo_init(){
    param:void
    local X_help_cmd=; X_help_cmd='x help -m fjo --init' help:arg:parse
    local cur_token=; local cur_owner=; local cur_endpoint=; local cur_web_endpoint=
    if [ -f "$(___x_cmd_fjo_cur --get config)" ]; then
        ___x_cmd_fjo_cur cur_token:=token cur_owner:=owner cur_endpoint:=endpoint cur_web_endpoint:=web_endpoint
    fi

    ___x_cmd_fjo_cfg___invoke --init \
        token        "Set up token"                          "${cur_token}"        '*'          -- \
        endpoint     "Set up endpoint"                       "${cur_endpoint}"                  -- \
        web_endpoint "Set up web_endpoint"                   "${cur_web_endpoint}"              -- \
        owner        "Set up owner name (optional)"          "${cur_owner}"        '=~'   "^[^:\\/ ]"    || return
}


___X_CMD_FCT_CFG_VARLIST="token,owner,endpoint,web_endpoint,repo"
___x_cmd_fjo_cfg___invoke(){
    local vendor="${___X_CMD_FCT_API_VENDOR:-"fjo"}"
    case "$vendor" in
        cb|tea)     xrc cb; xrc tea; "___x_cmd_${vendor}_cfg___invoke" "$@" ; return ;;
        fjo)        ;;
        *)              return 1 ;;
    esac

    # shellcheck disable=2154
    ___x_cmd_cfgy_obj   \
        --prefix            ___X_CMD_FJO_CFG_DATA                    \
        --default-config    "${___X_CMD_ROOT_CFG}/fjo/X.cfg.yml"     \
        --current-config    "${___X_CMD_FCT_LOCAL_CONFIG}"           \
        --current-profile   "${___X_CMD_FCT_LOCAL_PROFILE}"          \
        --varlist           "$___X_CMD_FCT_CFG_VARLIST"              \
        "$@"
}
