#!/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
