91 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/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 <nombre_paquete> [--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
 |