

# x install sys --tool apk vim curl emacs
# x install sys --tool dnf vim curl emacs

___x_cmd_install_sys(){
    local tool=""
    while [ $# -gt 0 ]; do
        case "$1" in
            -t|--tool)      tool="$1" ;;
            --)             shift; break    ;;
            *)              break ;;
        esac
        shift
    done

    [ -n "$tool" ] || {
        ___x_cmd_install_sys___tool_ || return 1
        tool="$x_"
    }

    ___x_cmd_install_meta_getnamelist_by_tool_ "$tool" "$@" || return $?
    local namelist="$x_"

    local IFS=","
    install:info --cmd "$x_"        \
        "Running command for $*"

    case "$tool" in
        winget)     eval "$x_" ;;

        brew)       eval "brew install $x_" ;;
        apk)        eval "___x_cmd sudo apt install -y $namelist" ;;
        pacman)     eval "___x_cmd sudo pacman install -y $namelist" ;;

        apt)        ___x_cmd sudo apt update
                    eval "___x_cmd sudo apt install -y $namelist"
                    ;;
        dnf)
                    eval "___x_cmd sudo dnf install -y $namelist"
                    ;;
        yum)
                    eval "___x_cmd sudo apt install -y $namelist"
                    ;;
    esac
}

___x_cmd_install_sys___tool_(){
    x_=""
    if      ___x_cmd os is  win;        then        x_=winget
    elif    ___x_cmd_hascmd apt;        then        x_=apt
    elif    ___x_cmd_hascmd dnf;        then        x_=dnf
    elif    ___x_cmd_hascmd yum;        then        x_=yum
    elif    ___x_cmd_hascmd apk;        then        x_=apk
    elif    ___x_cmd_hascmd brew;       then        x_=brew
    elif    ___x_cmd_hascmd pacman;     then        x_=pacman
    else
            return 1
    fi
}
