# shellcheck shell=dash disable=SC2016

# x install plan -p 'sys,xpkg' vim curl emacs
# x install plan -p 'sys,xpkg' vim curl emacs

# only sys
# priority='sys,official,xpkg,pixi,pkgx,scoop,asdf'

# priority='sys,xpkg'

___x_cmd_install_plan(){
    local mode=besteffort

    # local pipemode=""
    while [ $# -gt 0 ]; do
        case "$1" in
            -t|--tool)      tool="$1" ;;
            # -|-p|--pipe
            --)             shift; break        ;;
            --failfast)     mode=failfast       ;;

            --default)      ps="sys,xpkg,pixi"  ;;
            --sys)          ps="sys" ;;
            --priority)     ps="$2"; shift ;;
            *)              break ;;
        esac
        shift
    done

    local psline; psline="$(___x_cmd_install_plan___convert_ "$ps")"

    local software
    for software in "$@"; do
        ___x_cmd_install_plan___one "$software"
    done
}

___x_cmd_install_plan___convert_(){
    x_="$(___x_cmd_cmds awk -v err=0 -v FS=, '
    {
        gsub("(^[ ]*)|([ ]*$)", "", $0)
        if ($0 ~ /^(apt)|(dnf)|(yum)|(apk)|(brew)|(pacman)$/) {
            print $0
        } else {
            err = 1
            exit
        }
    }
    END{ exit(err); }
    ')"
}

___x_cmd_install_plan___one(){
    local s="$1"
    ___x_cmd_install_meta_getcmd_by_priority "$psline" "$s" || return 1
    local method="$x_"
    install:info "Using method → $method"
    eval "$method"
}

