

___x_cmd_os_pkgadd(){
    local brew
    local scoop

    local apt
    local dnf
    local apk
    local pacman

    local redhat
    local centos
    local fedora
    local rocky

    local arch
    local alpine

    local ubuntu
    local debian

    while [ "$#" -gt 0 ]; do
        case "$1" in
            --brew|--scoop|\
            --apt|--dnf|--apk|\
            --redhat|--centos|--fedora|\
            --ubuntu|--debian|--rocky|--arch)
                eval "${1#--}=\"$2\""; shift 2 ;;
            *)
                N=os M="Unknown option -> $1" log:ret:64
        esac
    done


    local x_
    ___x_cmd os name_
    case "$x_" in
        darwin)     [ -z "$brew" ] || {
                        ___x_cmd_os_pkgadd___brew "$brew"
                        return
                    } ;;

        win)        [ -z "$scoop" ] || {
                        ___x_cmd_os_pkgadd___scoop "$scoop"
                        return
                    } ;;

        linux)      ___x_cmd_os_pkgadd___linux || return
    esac

    return 1
}

___x_cmd_os_pkgadd___linux(){
    case "$x_" in
        alpine)     [ -z "$alpine" ] || {
                        ___x_cmd_os_pkgadd___pacman "$alpine"
                        return
                    } ;;

        arch)       [ -z "$arch" ] || {
                        ___x_cmd_os_pkgadd___pacman "$arch"
                        return
                    } ;;


        debian)     [ -z "$debian" ] || {
                        ___x_cmd_os_pkgadd___dnf "$debian"
                        return
                    } ;;
        ubuntu)     [ -z "$ubuntu" ] || {
                        dnf install "$ubuntu"
                        return
                    } ;;


        redhat)     [ -z "$redhat" ] || {
                        ___x_cmd_os_pkgadd___dnf "$redhat"
                        return
                    } ;;
        centos)     [ -z "$centos" ] || {
                        ___x_cmd_os_pkgadd___dnf "$centos"
                        return
                    } ;;
        fedora)     [ -z "$fedora" ] || {
                        ___x_cmd_os_pkgadd___dnf "$fedora"
                        return
                    } ;;
        rocky)      [ -z "$rocky" ] || {
                        ___x_cmd_os_pkgadd___dnf "$rocky"
                        return
                    } ;;

        *)          ___x_cmd_os_pkgadd___linux_pm ;;
    esac
}

___x_cmd_os_pkgadd___linux_pm(){

    if ___x_cmd_hascmd apk; then
        ___x_cmd_os_pkgadd___dnf "$apk"
        return
    fi

    if ___x_cmd_hascmd pacman; then
        ___x_cmd_os_pkgadd___dnf "$pacman"
        return
    fi

    if ___x_cmd_hascmd apt; then
        ___x_cmd_os_pkgadd___apt "$apt"
        return
    fi

    if ___x_cmd_hascmd dnf; then
        ___x_cmd_os_pkgadd___dnf "$dnf"
        return
    fi

    return 1
}



___x_cmd_os_pkgadd___brew(){
    eval ___x_cmd sudo brew   install        "$(___x_cmd_os_pkgadd___pkg2strlist "$1")"
}

___x_cmd_os_pkgadd___scoop(){
    eval ___x_cmd sudo scoop  install        "$(___x_cmd_os_pkgadd___pkg2strlist "$1")"
}

___x_cmd_os_pkgadd___dnf(){
    eval ___x_cmd sudo dnf    install -y     "$(___x_cmd_os_pkgadd___pkg2strlist "$1")"
}

___x_cmd_os_pkgadd___apt(){
    ___x_cmd sudo apt update
    eval ___x_cmd sudo apt    install        "$(___x_cmd_os_pkgadd___pkg2strlist "$1")"
}

___x_cmd_os_pkgadd___apk(){
    eval ___x_cmd sudo apk    add            "$(___x_cmd_os_pkgadd___pkg2strlist "$1")"
}

___x_cmd_os_pkgadd___pacman(){
    eval ___x_cmd sudo pacman -S             "$(___x_cmd_os_pkgadd___pkg2strlist "$1")"
}

___x_cmd_os_pkgadd___pkg2strlist(){
    # adding quote ...
    # triming the spaces ...
    printf "%s\n" "$1" | ___x_cmd_cmds tr ', ' ' '
}
