Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save luiszimmermann/49ab3d7af3398a12476be621fe08cc9a to your computer and use it in GitHub Desktop.
Save luiszimmermann/49ab3d7af3398a12476be621fe08cc9a to your computer and use it in GitHub Desktop.

Revisions

  1. luiszimmermann created this gist Apr 25, 2025.
    43 changes: 43 additions & 0 deletions get-python-package-latest-versions.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    #!/bin/bash

    # Verifica se um nome de pacote foi fornecido como argumento
    if [ -z "$1" ]; then
    echo "Usage: $0 <python-package-name>"
    exit 1
    fi

    PACKAGE_NAME=$1

    # Verifica se os comandos 'curl' e 'jq' estão disponíveis
    if ! command -v curl &> /dev/null; then
    echo "Error: 'curl' not found."
    exit 1
    fi

    if ! command -v jq &> /dev/null; then
    echo "Error: 'jq' not found."
    exit 1
    fi

    # Constrói a URL da API do PyPI
    PYPI_URL="https://pypi.org/pypi/$PACKAGE_NAME/json"

    # Usa curl para buscar os dados JSON da API do PyPI
    # -f: Falha silenciosamente em erros HTTP (como 404 Not Found)
    # -s: Modo silencioso (não mostra progresso)
    # -L: Segue redirecionamentos
    # Usa jq para extrair o campo 'version' dentro do objeto 'info'
    # -r: Saída "raw" (remove as aspas da string JSON)
    LATEST_VERSION=$(curl -fsL "$PYPI_URL" | jq -r '.info.version')

    # Verifica se o comando curl ou jq falhou ou se a versão está vazia/nula
    # $? contém o código de saída do último comando executado (curl | jq)
    if [ $? -ne 0 ] || [ -z "$LATEST_VERSION" ] || [ "$LATEST_VERSION" == "null" ]; then
    echo "Error: Failed to get the version for package '$PACKAGE_NAME'. Check the name or availability on PyPI." >&2 # Envia erro para stderr
    exit 1
    else
    # Imprime apenas a versão
    echo "$LATEST_VERSION"
    fi

    exit 0