feat: Agregar comando list-open-issues a gitea_cli_helper.py

- Nuevo comando para listar todos los issues abiertos
- Muestra número, título, autor, fecha y URL
- Útil para verificar el estado de los issues
- Documentado en GEMINI.md con ejemplos
This commit is contained in:
Luis Ernesto Portillo Zaldivar 2025-07-15 00:06:37 -06:00
parent 4891c1d6b3
commit 9c32be4c28
2 changed files with 69 additions and 0 deletions

View File

@ -90,6 +90,34 @@ El script también verifica:
- Si el PR está cerrado sin mergear (error)
- Si el PR tiene conflictos o no es mergeable (error)
#### 6. Listar Issues Abiertos
```bash
python gitea_cli_helper.py list-open-issues
```
Lista todos los issues abiertos del repositorio, mostrando:
- Número del issue
- Título
- Etiquetas (si las tiene)
- Autor y fecha de creación
- URL del issue
**Ejemplo de salida:**
```
Issues abiertos (3):
--------------------------------------------------------------------------------
#15: [Extensión Opcional] Integración con Calendario para Citas
Autor: luis_portillo | Creado: 2025-07-12
URL: https://gitea.grupoconsiti.com/luis_portillo/clinical_laboratory/issues/15
#14: [Extensión Opcional] Portal Web para Pacientes/Médicos
Autor: luis_portillo | Creado: 2025-07-12
URL: https://gitea.grupoconsiti.com/luis_portillo/clinical_laboratory/issues/14
--------------------------------------------------------------------------------
Total: 2 issues abiertos
```
---

View File

@ -110,6 +110,42 @@ def close_issue(issue_number):
_make_gitea_request("PATCH", endpoint, payload)
print(f"Issue #{issue_number} cerrado exitosamente.")
def list_open_issues():
"""Lists all open issues in the repository."""
endpoint = f"repos/{GITEA_USERNAME}/{GITEA_REPO_NAME}/issues"
print(f"Obteniendo issues abiertos del repositorio {GITEA_REPO_NAME}...")
try:
# Get open issues (state=open is default)
issues = _make_gitea_request("GET", endpoint + "?state=open")
if not issues:
print("No hay issues abiertos en este momento.")
return
print(f"\nIssues abiertos ({len(issues)}):")
print("-" * 80)
for issue in issues:
# Format issue information
number = issue.get('number', 'N/A')
title = issue.get('title', 'Sin título')
author = issue.get('user', {}).get('login', 'Desconocido')
created = issue.get('created_at', '').split('T')[0] if issue.get('created_at') else 'N/A'
labels = [label.get('name', '') for label in issue.get('labels', [])]
labels_str = f" [{', '.join(labels)}]" if labels else ""
print(f"#{number}: {title}{labels_str}")
print(f" Autor: {author} | Creado: {created}")
print(f" URL: {issue.get('html_url', 'N/A')}")
print()
print("-" * 80)
print(f"Total: {len(issues)} issues abiertos")
except Exception as e:
print(f"Error al obtener los issues: {e}")
def merge_pull_request(pr_number, merge_method="merge"):
"""Merges a pull request (only allowed to dev branch)."""
# First, get PR information to check the base branch
@ -184,6 +220,9 @@ def main():
merge_pr_parser.add_argument("--pr-number", type=int, required=True, help="Número del pull request.")
merge_pr_parser.add_argument("--merge-method", choices=["merge", "squash", "rebase"], default="merge",
help="Método de merge: merge, squash o rebase (default: merge).")
# Subparser para listar issues abiertos
list_issues_parser = subparsers.add_parser("list-open-issues", help="Lista todos los issues abiertos del repositorio.")
args = parser.parse_args()
@ -197,6 +236,8 @@ def main():
close_issue(args.issue_number)
elif args.command == "merge-pr":
merge_pull_request(args.pr_number, args.merge_method)
elif args.command == "list-open-issues":
list_open_issues()
else:
parser.print_help()