# shellcheck shell=dash

___x_cmd_pixi_la(){
    ___x_cmd_pixi_la___auto "$@"
}

___x_cmd_pixi_la___auto(){
    if ___x_cmd_is_stdout2tty; then
        ___x_cmd_pixi_la___app
    else
        # consider get rid of the data
        ___x_cmd_pixi_la___txt
    fi
}

___x_cmd_pixi_la___txt(){
    ___x_cmd ccmd 1d    -- ___x_cmd_pixi_la___raw
}

___x_cmd_pixi_la___raw(){
    ___x_cmd_pixi___runmain search '**' | command tee "$___X_CMD_PIXI_LA_FP"
}

___x_cmd_pixi_la_fz_data(){
    ___x_cmd_pixi_la___txt | {
        read -r line; ___x_cmd fzf --ansi \
            --height 90% --layout=reverse \
            --preview='___x_cmdexe pixi --pkginfo {1}'
    }
}

___x_cmd_pixi_la___app(){
    local data; data="$( ___X_CMD_RUNMODE="$___X_CMD_RUNMODE" ___x_cmdexe pixi --fzdata )" || return $?

    pixi:info "Package selected ->   $data"

    local package="${data%% *}"
    local channel; channel="$(printf "%s\n" "$data" | command awk '{ print $3; }')"
    channel="${channel%%/*}"

    local id=
    local url="https://prefix.dev/channels/$channel/packages/$package"

    # while true; do
        ___x_cmd ui select id   "Next for package -> $package"                            \
            "x pixi search         $package  # For more info"                             \
            "x pixi exec           $package  # Run command in a temporary environment"    \
            "x pixi global install $package  # Install globally"                          \
            "x pixi install        $package  # Install all dependencies"                  \
            "x pixi add            $package  # Add package"                               \
            "x open '$url'" \
            "return 0" || return $?

        case "$id" in
            1)      ___x_cmd_pixi search                "$package" ;;
            2)      ___x_cmd_pixi exec                  "$package" ;;
            3)      ___x_cmd_pixi global install        "$package" ;;
            4)      ___x_cmd_pixi install               "$package" ;;
            5)      ___x_cmd_pixi add                   "$package" ;;
            6)      ___x_cmd open "$url" ;;
            *)      return 0 ;;
        esac
    # done
}
