# shellcheck shell=dash

___x_cmd_websrc_env(){
    if [ -z "$___X_CMD_WEBSRC_REGION" ] || [ -z "$___X_CMD_WEBSRC_LIST" ]; then
        x:warn "Websrc Not Set in this env."
        return 1
    fi

    printf "%s\n" "___X_CMD_WEBSRC_REGION=${___X_CMD_WEBSRC_REGION}"
    printf "%s\n" "___X_CMD_WEBSRC_LIST='${___X_CMD_WEBSRC_LIST}'"
}


___x_cmd_websrc_local()(
    local fp="${___X_CMD_ROOT_CFG}/websrc/region.setup.sh"
    [ -f "$fp" ] || {
        x:warn "Local Config Not Set: $fp"
        return 1
    }

    . "$fp"

    printf "%s\n" "___X_CMD_WEBSRC_REGION=${___X_CMD_WEBSRC_REGION}"
    printf "%s\n" "___X_CMD_WEBSRC_LIST='${___X_CMD_WEBSRC_LIST}'"
)

___x_cmd_websrc_global(){
    local fp="${___X_CMD_ROOT_GCFG}/websrc/region.setup.sh"
    [ -f "$fp" ] || {
        x:warn "Global Config Not Set: $fp"
        return 1
    }

    . "$fp"

    printf "%s\n" "___X_CMD_WEBSRC_REGION=${___X_CMD_WEBSRC_REGION}"
    printf "%s\n" "___X_CMD_WEBSRC_LIST='${___X_CMD_WEBSRC_LIST}'"
}


___x_cmd_websrc_reset(){
    ___x_cmd_websrc_load
    [ -n "$___X_CMD_WEBSRC_REGION" ] || ___x_cmd_websrc_global
}


___x_cmd_websrc_uproot(){
    local cursrc="${1:?Provide src}"
    if [ "$cursrc" = "${___X_CMD_WEBSRC_LIST%%"${___X_CMD_UNSEENCHAR_NEWLINE}"*}" ]; then
        return 0
    fi

    ___X_CMD_WEBSRC_REGION=internet
    case "$cursrc" in
        *gitee.com/*|*gitcode.com/*)
            ___X_CMD_WEBSRC_REGION=cn   ;;
    esac

    local IFS="$___X_CMD_UNSEENCHAR_NEWLINE"

    set -- "${cursrc}" \
        ${___X_CMD_WEBSRC_LIST%"${cursrc}${___X_CMD_UNSEENCHAR_NEWLINE}"*} \
        ${___X_CMD_WEBSRC_LIST#*"${cursrc}${___X_CMD_UNSEENCHAR_NEWLINE}"}

    ___x_cmd_websrc_set "$___X_CMD_WEBSRC_REGION" "$@"
}

