# ============================================================
# aliases-pm.sh — Aliases y funciones Bash para PMs
# ============================================================
# Qué es:      Colección de atajos de terminal para el trabajo
#              diario de un PM: git, GitHub CLI, APIs y JSON.
# Cuándo usarlo: Cárgalo en tu shell para no memorizar comandos
#              largos. Funciona en Bash y Zsh (Linux/Mac/WSL).
# Requisitos:  git, curl, jq y gh CLI instalados.
#              (jq: https://jqlang.github.io/jq/ — gh: https://cli.github.com/)
# Cómo usarlo: 1. Guarda este archivo en tu home: ~/aliases-pm.sh
#              2. Agrégalo a tu shell:
#                   echo 'source ~/aliases-pm.sh' >> ~/.bashrc   # o ~/.zshrc
#              3. Recarga: source ~/.bashrc
# ============================================================

# ---------- Git: leer el repo sin abrir el navegador ----------
alias gl='git log --oneline --graph --decorate -15'      # Historia compacta
alias gs='git status -sb'                                 # Estado corto
alias gd='git diff --stat'                                 # Qué archivos cambiaron
alias gquien='git shortlog -sn --since="1 month ago"'      # Quién comiteó este mes

# Ver qué cambió en un archivo y quién lo tocó
# Uso: gblame src/app/page.tsx
gblame() {
  git log --oneline -5 -- "$1" && echo "---" && git blame --date=short "$1" | head -20
}

# ---------- GitHub CLI: PRs e issues desde terminal ----------
alias prs='gh pr list --limit 15'                          # PRs abiertos
alias prsmios='gh pr list --author "@me"'                  # Mis PRs
alias issues='gh issue list --limit 15'                    # Issues abiertos

# Resumen de un PR: estado, checks y archivos
# Uso: prinfo 123
prinfo() {
  gh pr view "$1" && echo "--- CHECKS ---" && gh pr checks "$1"
}

# ---------- APIs: consultar sin Postman ----------
# GET a cualquier API con JSON formateado
# Uso: api https://api.github.com/repos/github/spec-kit
api() {
  curl -s "$1" | jq '.'
}

# Métricas rápidas de un repo de GitHub
# Uso: gh-metrics github/spec-kit
gh-metrics() {
  curl -s "https://api.github.com/repos/$1" | jq '{estrellas: .stargazers_count, forks: .forks_count, issues_abiertos: .open_issues_count, ultimo_push: .pushed_at}'
}

# Estado de una API (código HTTP y tiempo de respuesta)
# Uso: apistatus https://api.miempresa.com/health
apistatus() {
  curl -s -o /dev/null -w "HTTP %{http_code} — %{time_total}s\n" "$1"
}

# ---------- Productividad ----------
alias hoy='date +%Y-%m-%d'                                 # Fecha ISO para nombres de archivo
alias puerto='lsof -i'                                     # Qué está usando cada puerto
alias myip='curl -s ifconfig.me && echo'                   # IP pública

# Crear carpeta de proyecto con la convención del equipo
# Uso: nuevoproyecto mi-feature
nuevoproyecto() {
  mkdir -p "$1"/{specs,docs,data} && cd "$1" && git init -q && echo "✅ $1 creado con specs/, docs/, data/"
}
