# shellcheck shell=dash

___x_cmd_websrc_set(){
    [ "$#" -gt 0 ] || {
        ___x_cmd_websrc_set_default
        return
    }

    local op="$1"; shift
    case "$op" in
        internet|net|inet)  ___x_cmd_websrc_set_internet "$@" ;;
        cn|default)         "___x_cmd_websrc_set_${op}" "$@"  ;;
        *)                  ___x_cmd_websrc_set_default "$@" ;;
    esac
}

___x_cmd_websrc_set_internet(){
    ___x_cmd_websrc_set_ "$@" internet \
        'https://raw.githubusercontent.com/%s/%s/%s/%s' \
        'https://gitee.com/%s/%s/raw/%s/%s'
        # 'https://websrc.x-cmd.com/%s/%s/%s/%s'
}

___x_cmd_websrc_set_cn(){
    ___x_cmd_websrc_set_ "$@" cn \
        'https://gitee.com/%s/%s/raw/%s/%s'
        # \
        # 'https://websrc.x-cmd.cn/%s/%s/%s/%s'           \
        # 'https://raw.githubusercontent.com/%s/%s/%s/%s' \
        # 'https://websrc.x-cmd.com/%s/%s/%s/%s'
}

# shellcheck disable=SC2019,SC2120
___x_cmd_websrc_set_default(){
    case "$1" in
        -g|--global)
            local arg=-g; shift ;;
        *)
            local arg ;;
    esac

    case "$___X_CMD_WEBSRC_REGION" in
        cn)     ___x_cmd_websrc_set_cn $arg ;;
        *)      ___x_cmd_websrc_set_internet $arg ;;
    esac
}

___x_cmd_websrc_set_(){
    case "$1" in
        -g|--global)
            local fp="${___X_CMD_ROOT_GCFG}/websrc/region.setup.sh"; shift ;;
        *)
            local fp="${___X_CMD_ROOT_CFG}/websrc/region.setup.sh"
    esac

    [ -d "${fp%/*}" ] || ___x_cmd_cmds_mkdir -p "${fp%/*}"  # Delibratly not using 'x mkdirp' for x-cmd unloaded yet.
    ___x_cmd_websrc_set___dump "$@" >"$fp"
}

___x_cmd_websrc_set___dump(){
    ___X_CMD_WEBSRC_REGION="${1:?Provide region}"; shift
    printf "%s\n" "___X_CMD_WEBSRC_REGION=${___X_CMD_WEBSRC_REGION}"
    local IFS="$___X_CMD_UNSEENCHAR_NEWLINE"
    printf "%s\n" "___X_CMD_WEBSRC_LIST='$*
'"
    ___X_CMD_WEBSRC_LIST="$(printf "%s\n" "$@")"
}


___x_cmd_websrc_autoset(){
    if ___x_cmd_websrc_testcn; then
        ___x_cmd_websrc_set_cn
    else
        ___x_cmd_websrc_set_internet
    fi
}
