Go CLI v0.1.9

taghound

CLI que muestra el estado de releases en tu repositorio Git — branches y tags ordenados por semver — y qué versión está realmente desplegada en cada ambiente de Bitbucket Pipelines.

¿Qué hace taghound?

Cuando trabajas en equipo sobre un mismo repositorio, ubicar el último release y saber desde qué punto partir puede ser tedioso. TagHound resuelve eso: sincroniza el remoto, encuentra tus branches de release y te muestra las versiones ordenadas por semver — todo en un solo comando.

  • Sincroniza tags y branches del remoto automáticamente
  • Identifica branches de release según tu convención de nombres
  • Ordena tags por semver y muestra el último release primero
  • Detalla commit, autor y fecha de cada branch
  • Modo --dirty muestra solo orphan tags (tags sin branch asociado)
  • taghound deploys muestra el último deploy exitoso por país/ambiente en Bitbucket Pipelines y lo ubica en tu historial de releases — branch, tag y si hay algo más nuevo sin desplegar
terminal — taghound demo
$ █

Instalación

# via Homebrew
$ brew install jee4nc/tap/taghound

Pre-built binaries

Descarga desde la página de Releases el binario para tu plataforma:

  • taghound_darwin_arm64.tar.gz — macOS Apple Silicon
  • taghound_darwin_amd64.tar.gz — macOS Intel
  • taghound_linux_amd64.tar.gz — Linux x86_64
  • taghound_linux_arm64.tar.gz — Linux ARM64
  • taghound_windows_amd64.zip — Windows x86_64
  • taghound_windows_arm64.zip — Windows ARM64

Primer uso

Dentro de cualquier repositorio Git:

terminal — quickstart
$ █

Flags disponibles

Flag Tipo Descripción
--dirty, -d bool Muestra solo orphan tags (tags sin branch asociado)
--profile string Usa un profile específico para este run sin cambiar el activo (también aplica a deploys)
deploys cmd Muestra qué hay desplegado por país/ambiente (Bitbucket Pipelines)
deploys --refresh, -r bool Ignora el caché (5 min) y vuelve a consultar Bitbucket
deploys --envs bool Lista los environments de Bitbucket definidos en el repo
--version, -v — Muestra la versión instalada
--help, -h — Muestra la ayuda

Profiles

TagHound usa profiles para soportar diferentes convenciones de nombres de branches y tags. Cada profile define un prefijo de branch y un prefijo de tag, y genera automáticamente las regex necesarias para matchear. El profile default matchea branches release-X.Y y tags vX.Y.Z.

Listar profiles

Muestra todos los profiles configurados y cuál está activo.

terminal — config list
$ █

Ver detalle del profile activo

Muestra los prefijos y las regex que TagHound genera internamente para el profile activo.

terminal — config show
$ █

Si tienes países configurados para deploys, también muestra la sección Deploy environments (Bitbucket) con la variable del token y los ambientes prod/qa de cada país.

Crear un profile

Usa config set para crear o actualizar un profile con prefijos personalizados.

terminal — config set
$ █

Cambiar profile activo

Cambia el profile activo con config use. Los siguientes runs de taghound usarán este profile.

terminal — config use
$ █

También puedes usar un profile específico para un solo run sin cambiar el default, con el flag --profile:

terminal — profile flag
$ █

Eliminar un profile

No se puede borrar default. Si borras el profile activo, se vuelve a default.

terminal — config delete
$ █

La configuración se guarda en ~/.config/taghound/config.json.

Deployments (Bitbucket Cloud)

Que exista un branch de release nuevo no significa que esté en producción. taghound deploys le pregunta a Bitbucket Pipelines por el último deploy exitoso de cada ambiente y ubica ese commit exacto en tu historial: a qué branch pertenece, con qué tag calza y si hay algo más nuevo esperando.

terminal — setup deploys
$ █
terminal — deploys
$ █

El código de país se guarda en mayúscula y --prod es obligatorio para un país nuevo. Para quitarlo: taghound config country delete CL. Los resultados se cachean 5 minutos; taghound deploys --refresh se salta el caché.

Estados

Estado Significado
✓ latest El commit desplegado es el tag más nuevo de la línea de release más nueva
● N commits not tagged Desplegado desde un branch de release con commits después de su último tag
⚠ … not deployed Existe un branch de release más nuevo, o un tag más nuevo en la misma línea
● not a release branch Desplegado desde un feature u otro branch — normal en QA
✗ not a release branch deployed to PROD Lo mismo, pero en PROD (en rojo)
never deployed Los pipelines llegaron al paso (manual) de deploy pero nadie lo ejecutó
? commit not found locally El commit desplegado no está en tu clon (branch borrado, force-push)

Los países cuyos ambientes no existen en el repo se ocultan. Los tags fuera de las líneas de release de tus branches (ej. v3950.3950.1 creado desde un feature branch) se ignoran.

Autenticación y configuración

BITBUCKET_TOKEN es un token de repo o workspace y se envía como Bearer. BITBUCKET_USERNAME solo hace falta para app passwords o API tokens (usa Basic auth). En ~/.config/taghound/config.json, bajo bitbucket, puedes ajustar auth_env (default BITBUCKET_TOKEN), username, lookback (deploys revisados por ambiente, default 200) y cache_ttl_seconds (default 300).

deploys solo soporta remotos origin en Bitbucket Cloud y consulta su API por HTTPS con net/http.

Build from source

Requiere Go 1.26+ y Git.

terminal — build
$ █

Los binarios se generan en dist/ con flags optimizados (-s -w) para tamaño mínimo.

Zero dependencias externas. TagHound usa solo la stdlib de Go. Git se invoca via os/exec — sin libgit2, sin CGO.

Changelog

  1. v0.1.9 latest
    • Corregido deploys consulta Bitbucket filtrando por UUID de environment y ordenando por fecha de término — antes la API real respondía 400.
    • Añadido Ambientes nunca desplegados se muestran como never deployed — N pipelines stopped before this step cuando el paso manual no se ejecutó.
    • Añadido Un deploy a PROD desde un branch que no es de release se marca en rojo. En QA se considera normal.
    • Cambiado Se ignoran tags fuera de las líneas de release (ej. v3950.3950.1), se ocultan países sin ambientes en el repo y lookback sube de 40 a 200. El caché anterior se invalida.
  2. v0.1.8
    • Corregido Errores de la API de Bitbucket accionables: 401 sugiere revisar el token y BITBUCKET_USERNAME, 403 indica el scope faltante, 404 indica repo no encontrado o inaccesible.
  3. v0.1.7
    • CI La publicación a Homebrew y Scoop usa un token de GitHub App. Sin cambios en el CLI.
  4. v0.1.6
    • Añadido Comando taghound deploys: último deploy exitoso por país en QA/PROD de Bitbucket Pipelines, ubicado frente a tus branches y tags de release.
    • Añadido deploys --envs para listar environments y -r, --refresh para saltarse el caché de 5 minutos.
    • Añadido config country set/delete con plantillas {slug}, {country}, {COUNTRY} y {workspace}.
    • Añadido Auth con BITBUCKET_TOKEN (y BITBUCKET_USERNAME opcional). config show muestra los ambientes configurados.
  5. v0.1.5
    • Añadido Atajo -d para --dirty.
    • Cambiado --dirty muestra solo los tags huérfanos (antes los agregaba al final del listado normal).
    • Corregido Un comando desconocido ahora da error unknown command en vez de ejecutar el tracker.
  6. v0.1.4
    • CI Mejora del workflow de release para resolver la tag a publicar.
  7. v0.1.3
    • Cambiado Manejo de errores de configuración más robusto (funciona aunque no se pueda determinar el home) y mensajes más claros.
    • CI Auto-tag de patch al mergear un PR a main.
  8. v0.1.2
    • CI Ajuste del token del workflow de auto-tagging.
  9. v0.1.1
    • CI Auto-tagging para branches de release.
  10. v0.1.0
    • Añadido Primera versión: sincroniza el remoto, detecta branches release-X.Y y tags vX.Y.Z, los ordena por semver y muestra commit, autor y mensaje.
    • Añadido Profiles (config list/show/set/use/delete), --dirty y --profile.
    • Añadido Distribución por Homebrew, Scoop, .deb/.rpm y binarios para linux/darwin/windows × amd64/arm64.