#!/bin/bash : ' --- Author: Luis GuLo Release: 1.3 Changelog: 1.3: Mostrar version Python requerida 1.2: Ayuda + Mostrar por defecto 10 ultimas versiones disponibles, con opcion a todas 1.1: Compactar salida de todas las versiones disponibles 1.0: Localizar paquete y mostrar ultima version + disponibles ---' mostrar_ayuda() { echo "════════════════════════════════════════════════════════════════════════════════" echo "Uso: $0 [--all]" echo "" echo "Opciones:" echo " --all Muestra todas las versiones disponibles (incluye alphas, betas, etc.)" echo "" echo "Por defecto, se muestran las últimas 10 versiones estables." echo "Nota: Se indica entre paréntesis la version de Python requerida" echo "════════════════════════════════════════════════════════════════════════════════" } # Verifica si se pidió ayuda if [[ "$1" == "--help" || "$1" == "-h" ]]; then mostrar_ayuda exit 0 fi # Verifica que se haya pasado un nombre de paquete if [ -z "$1" ]; then echo "❌ Error: Debe indicar el nombre del paquete." mostrar_ayuda exit 1 fi PAQUETE="$1" # Verificar orden: paquete + opcion if [ "$PAQUETE" == "--all" ] ; then echo "❌ Error: Orden en sintaxis obligatoria." mostrar_ayuda exit 0 fi URL="https://pypi.org/pypi/$PAQUETE/json" RESPUESTA=$(curl -s "$URL") # Verifica si la respuesta contiene información válida if echo "$RESPUESTA" | grep -q '"info"'; then NOMBRE=$(echo "$RESPUESTA" | jq -r '.info.name') VERSION=$(echo "$RESPUESTA" | jq -r '.info.version') DESCRIPCION=$(echo "$RESPUESTA" | jq -r '.info.summary') echo "📦 Paquete: $NOMBRE" echo "🔢 Última versión: $VERSION" echo "📝 Descripción: $DESCRIPCION" # echo -e "\n📚 Versiones disponibles:" mostrar_versiones() { echo "$RESPUESTA" | jq -r '.releases | to_entries[] | "\(.key) \(.value[0].requires_python // "N/A")"' \ | grep -E '^[0-9]+\.[0-9]+\.[0-9]+ ' \ | sort -k1 -V -r \ | head -n 10 \ | awk '{printf "%s (%s) ", $1, $2}' echo } mostrar_todas_versiones() { echo "$RESPUESTA" | jq -r '.releases | to_entries[] | "\(.key) \(.value[0].requires_python // "N/A")"' \ | sort -k1 -V -r \ | awk '{printf "%s (%s) ", $1, $2}' echo } if [[ "$2" == "--all" ]]; then echo -e "\n📚 Versiones disponibles:" #echo "$RESPUESTA" | jq -r '.releases | keys[]' | sort -V -r | xargs mostrar_todas_versiones else echo -e "\n📚 Ultimas 10 Versiones estables disponibles:" #echo "$RESPUESTA" | jq -r '.releases | keys[]' \ # | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' \ # | sort -V -r \ # | head -n 10 \ # | xargs mostrar_versiones fi else echo "❌ No se encontró información para el paquete '$PAQUETE'" fi