# shellcheck shell=dash

___x_cmd_node___setarg_(){
    x_="set --"

    local i=1
    local justadd=
    while [ "$#" -gt 0 ]; do
        if [ -n "$justadd" ]; then
            x_="$x_ \"\$$i\""
        else
            case "$1" in
                -|--eval|-*e|-p|--print|--run)
                                x_=""; return ;;
                --)             shift; i=$((i+1)); x_="$x_ --"; false   ;;
                -*)
                                if ___x_cmd_node___setarg_singleopt "$1"; then
                                    x_="$x_ \"\$$i\""
                                else
                                    x_="$x_ \"\$$i\" \"\$$((i+1))\""
                                    shift 2
                                    i=$((i+2))
                                    continue
                                fi
                                ;;
                *)              false ;;
            esac || {
                if ___x_cmd_which_one "$1" 2>/dev/null && [ "$___X_CMD_WHICH_ONE_RESOURCE_TYPE" != "official" ]; then
                    node:debug "Found file ==> $___X_CMD_WHICH_ONE_RESULT"
                    ___X_CMD_NODE_WHICHFILE="$___X_CMD_WHICH_ONE_RESULT"
                    x_="$x_ \"\$___X_CMD_NODE_WHICHFILE\""
                    justadd=1
                else
                    x_=""
                    node:error "Abort because file path is unknown ==> $1"
                    node:error "If you want more log ==> x log +node"
                    return 1
                fi
            }
        fi
        shift
        i=$((i+1))
    done
}

___x_cmd_node___setarg_singleopt(){
    case "$1" in
        --*=*)
            return 0
            ;;
        -C|--conditions|--cpu-prof-dir|--cpu-prof-interval|--cpu-prof-name|--diagnostic-dir|--disable-proto|--dns-result-order|\
        --loader|--experimental-loader|--experimental-policy|--es-module-specifier-resolution|--experimental-specifier-resolution|\
        --heap-prof-dir|--heap-prof-interval|--heap-prof-name|--heapsnapshot-near-heap-limit|--heapsnapshot-signal|\
        --icu-data-dir|--input-type|--inspect-publish-uid|--max-http-header-size|--openssl-config|--policy-integrity|\
        --redirect-warnings|--report-directory|--report-dir|--report-signal|--report-filename|-r|--require|--secure-heap|--secure-heap-min|\
        --title|--tls-cipher-list|--tls-keylog|--trace-event-categories|--trace-event-file-pattern|--unhandled-rejections|\
        --use-largepages|--v8-pool-size|--watch-path|\
        --inspect|--inspect-brk|--debug-port|--inspect-port) # TODO
            return 1
            ;;
    esac
    return 0
}
