diff --git a/GEMINI.md b/GEMINI.md index 1d6146f..9b72a95 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -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 +``` + --- diff --git a/gitea_cli_helper.py b/gitea_cli_helper.py index d0682e3..4049758 100644 --- a/gitea_cli_helper.py +++ b/gitea_cli_helper.py @@ -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()