# shellcheck shell=dash

___x_cmd_snap_run(){
    local hascmd=1

    [ $# -gt 0 ] || set -- --help

    local ___X_CMD_SNAP_SUDOMODE=""

    while [ $# -gt 0 ]; do
        case "$1" in
            -h|--help)                  ___x_cmd help -m snap --run; return ;;
            --disable-command-check)    hascmd="";                      shift ;;
            --sudo)                     ___X_CMD_SNAP_SUDOMODE=1;       shift ;;
            *)                          break ;;
        esac
    done


    local cmd="$1"

    if [ -n "$hascmd"  ] && ___x_cmd_hascmd "$cmd"; then
        if [ -n "$___X_CMD_SNAP_SUDOMODE" ]; then
            set -- ___x_cmd sudo "$@"
        fi

        "$@"
        return $?
    fi

    if [ -n "$___X_CMD_SNAP_SUDOMODE" ]; then
        set -- --sudo "$@"
    fi

    case "$___X_CMD_SNAP_RUNMODE" in
        auto)
                if ___x_cmd_is_termux; then
                    ___x_cmd termux pkg snap    "$@"
                else
                    ___x_cmd pkg        snap    "$@"
                fi
                ;;
        sys)        ___x_cmd_snap_run___syssnap         "$@" ;;
        pkg|"")     ___x_cmd pkg    snap                "$@" ;;
        apk)        ___x_cmd apk    snap                "$@" ;;
        apt)        ___x_cmd apt    snap                "$@" ;;
        brew)       ___x_cmd brew   snap                "$@" ;;
        dnf)        ___x_cmd dnf    snap                "$@" ;;
        go)         ___x_cmd go     snap                "$@" ;;
        pixi)       ___x_cmd pixi   snap                "$@" ;;
        # pkgx)       ___x_cmd pkgx   snap                "$cmd" "$@" ;;
        # asdf)       ___x_cmd asdf   snap                "$cmd" "$@" ;;
    esac
}

___x_cmd_snap_run___syssnap(){
    local cmd="$1"; shift ;
    if      ___x_cmd_is_termux      ; then      ___x_cmd termux pkg snap    "$cmd" "$@"
    elif    ___x_cmd hascmd apk     ; then      ___x_cmd apk snap           "$cmd" "$@"
    elif    ___x_cmd hascmd apt     ; then      ___x_cmd apt snap           "$cmd" "$@"
    elif    ___x_cmd hascmd brew    ; then      ___x_cmd brew snap          "$cmd" "$@"
    elif    ___x_cmd hascmd dnf     ; then      ___x_cmd dnf snap           "$cmd" "$@"
    elif    ___x_cmd hascmd go      ; then      ___x_cmd go snap            "$cmd" "$@"
    elif    ___x_cmd hascmd pixi    ; then      ___x_cmd pixi snap          "$cmd" "$@"
    else    ___x_cmd pkg snap "$cmd" "$@"
    fi
    # elif    ___x_cmd hascmd yay     ; then      ___x_cmd yay snap           "$cmd" "$@"
}

# ___x_cmd_snap_run___install(){
#     :
# }
