
___x_cmd_install_withtool(){
    [ $# -gt 0 ]    ||      set -- --help

    case "$1" in
        -h|--help)      ___x_cmd help -m install --withtool "$@" ; return 0 ;;
    esac

    [ $# -gt 0 ]    ||      N=install M="Please provide tool" log:ret:64
    local tool="$1"; shift

    local direct=""
    local mode=exec
    while [ $# -gt 0 ]; do
        case "$1" in
            --direct)       direct=1;       shift ;;
            --printcmd|--dry-run)
                            mode=printcmd;  shift ;;
            *)              break ;;
        esac
    done

    if [ -z "$direct" ]; then
        ___x_cmd_install_withtool___inner "$mode" "$tool" "$@"
    else
        ___x_cmd_install_withtool___direct "$mode" "$tool" "$@"
    fi
}

___x_cmd_install_withtool___inner(){
    local mode="$1"; shift
    local tool="$1"; shift
    [ -n "$tool" ] || return 1

    case "$tool" in
        xpkg)  tool=x ;;
    esac

    local software=""; local cmd=""
    for software in "$@"; do
        cmd="$( ___x_cmd_install_printcmd0 "$tool" "$software" )"

        if [ -n "$cmd" ]; then
            if [ "$mode" = "printcmd" ]; then
                printf '%s\n' "$cmd"
            else
                install:info --cmd "$cmd" "Running the command."
                eval "$cmd" || {
                    local exitcode=$?
                    install:error --cmd "$cmd" --exitocd "$exitcode" "Fail to execute command."
                    return 1
                }
            fi
        else
            N=install M="Fail to install." log:ret:64
        fi
    done
}


___x_cmd_install_withtool___direct(){
    local mode="$1"; shift
    local tool="$1" ;       shift

    if [ "$mode" = "printcmd" ]; then
        case "$tool" in
            apk)        printf 'x sudo x apk install -y %s\n' "$*" ;;
            pacman)     printf 'x sudo x pacman install -y %s\n' "$*" ;;
            apt)        printf 'x sudo x apt install -y %s\n' "$*" ;;
            dnf)        printf 'x sudo x dnf install -y %s\n' "$*" ;;
            yum)        printf 'x sudo x yum install -y %s\n' "$*" ;;
            winget)     printf 'x winget install %s\n' "$*" ;;
            brew)       printf 'x brew install %s\n' "$*" ;;
            pixi)       printf 'x pixi use %s\n' "$*" ;;
            pkgx)       printf 'x pkgx use %s\n' "$*" ;;
            xpkg|x)     printf 'x pkg use %s\n' "$*" ;;
            pip|uv)     printf 'x uv tool install %s\n' "$*" ;;
            npm|bun)    printf 'x bun add --global %s\n' "$*" ;;
            go)         printf 'x go install %s\n' "$*" ;;
            cargo)      printf 'x cargo install %s\n' "$*" ;;
        esac
    else
        local IFS=" "
        case "$tool" in
            apk)        ___x_cmd sudo ___x_cmd apk install -y    "$@"    ;;
            pacman)     ___x_cmd sudo ___x_cmd pacman install -y "$@"    ;;
            apt)        ___x_cmd sudo ___x_cmd apt update
                        ___x_cmd sudo ___x_cmd apt install -y    "$@"    ;;
            dnf)        ___x_cmd sudo ___x_cmd dnf install -y    "$@"    ;;
            yum)        ___x_cmd sudo ___x_cmd yum install -y    "$@"    ;;

            winget)     ___x_cmd_cmds winget install    "$@"    ;;

            brew)       ___x_cmd_cmds brew install      "$@"    ;;
            pixi)       ___x_cmd pixi use               "$@"    ;;
            pkgx)       ___x_cmd pkgx use               "$@"    ;;
            xpkg|x)     ___x_cmd pkg  use               "$@"    ;;

            pip|uv)     ___x_cmd uv tool install        "$@"    ;;
            npm|bun)    ___x_cmd bun add --global       "$@"    ;;
            go)         ___x_cmd go install             "$@"    ;;
            cargo)      ___x_cmd cargo install          "$@"    ;;
        esac
    fi

}

