# shellcheck shell=dash

___x_cmd log init pixi

xrc:mod:lib     pixi        \
    __download __install  __activate __advise ddgo la exec __runcmd snap __infuse \
    use


___x_cmd_pixi___main(){
    [ "$#" -gt 0 ] ||   set -- la

    local op="$1"; shift
    case "$op" in
        -h|--help)      ___x_cmd help -m pixi           "$@" ;;
        --infuse)        ___x_cmd_pixi___infuse         "$@" ;;

        --install)      ___x_cmd_pixi___install         "$@" ;;
        --uninstall)    ___x_cmd_pixi___uninstall       "$@" ;;

        --activate)     ___x_cmd_pixi___activate        "$@" ;;
        --deactivate)   ___x_cmd_pixi___deactivate      "$@" ;;
        --addpath)      ___x_cmd_pixi___addpath         "$@" ;;
        --upgrade)      ___x_cmd_pixi___upgrade          ;;
        --pkginfo)      ___x_cmd_pixi___pkginfo         "$@" ;;

        ddgo|:)         ___x_cmd_pixi_ddgo              "$@" ;;

        la)             ___x_cmd_pixi_la                "$@" ;;
        exec)           ___x_cmd_pixi_exec              "$@" ;;


        u|use)          ___x_cmd_pixi_use               "$@" ;;
        unuse)          ___x_cmd_pixi_"$op"             "$@" ;;

        # TODO:
        # ,|--co)         ;;
        # ,,|--coco)      ;;

        --|--runmain)   ___x_cmd_pixi___runmain         "$@" ;;
        --runcmd)       ___x_cmd_pixi___runcmd          "$@" ;;

        //|snap)        ___x_cmd_pixi_snap              "$@" ;;

        --fzdata)       ___x_cmd_pixi_la_fz_data        "$@" ;;

        *)              ___x_cmd_pixi___runmain "$op"   "$@" ;;
    esac
}

___x_cmd_pixi___init(){
    ___X_CMD_PIXI_LA_FP="${___X_CMD_ROOT_DATA}/pixi/la.txt"
    ___X_CMD_PIXI_DOWNLOAD_PATH="$___X_CMD_ROOT_DATA/pixi/download"
    ___X_CMD_PIXI_BIN_PATH="$HOME/.pixi/bin"
    ___X_CMD_PIXI_BIN="pixi"

    ___x_cmd ensurefp "$___X_CMD_PIXI_LA_FP" "$___X_CMD_PIXI_BIN_PATH"

    local x_=; ___x_cmd os name_; ___x_cmd os arch_
    [ "$___X_CMD_OS_NAME_" != "win" ] || ___X_CMD_PIXI_BIN="pixi.exe"
}

___x_cmd_pixi___init

___x_cmd_pixi___pkginfo(){
    ___x_cmd ccmd 1d -- ___x_cmd_pixi___pkginfo__ "$@"
}

___x_cmd_pixi___pkginfo__(){
    local pkgname="${1%% *}"
    pkgname="${pkgname##* }"

    # TODO: consider adding cache with specific folder and gc strategy ...
    ___x_cmd pixi search --color always "$pkgname"
}
