Skip to content

Pending tasks in issues #14

Pending tasks in issues

Pending tasks in issues #14

Workflow file for this run

name: Pending tasks in issues
on:
workflow_dispatch:
jobs:
pending-tasks:
runs-on: ubuntu-latest
steps:
- name: Checkout del repositorio
uses: actions/checkout@v2
- name: Configurar Python
uses: actions/setup-python@v2
with:
python-version: 3.x # Especifica la versión de Python que necesites
- name: Instalar dependencias
run: |
python -m pip install --upgrade pip
pip install PyGithub
- name: Ejecutar script de búsqueda y actualizar issue
env:
TOKEN: ${{ secrets.NOVUM_PRIVATE_REPOS }}
run: |
python - <<EOF
import os
from github import Github
from datetime import datetime
TOKEN = os.environ['TOKEN']
# Nombre de usuario y nombre del repositorio
OWNER = 'Telefonica'
REPO = 'mistica-design'
TARGET_ISSUE_NUMBER = 2490
# URL base del repositorio
REPO_URL = f'https://github.com/{OWNER}/{REPO}'
# Crea una instancia de la clase Github usando tu token de acceso
g = Github(TOKEN)
# Obtiene el repositorio
repo = g.get_repo(f'{OWNER}/{REPO}')
# Busca las issues cerradas en el repositorio
closed_issues = repo.get_issues(state='closed')
# Lista para almacenar las issues con checkboxes desactivados
issues_con_checkboxes_desactivados = []
def count_checkboxes(text):
"""Cuenta checkboxes marcados y desmarcados en un texto"""
if text is None:
return 0, 0
checked = text.count('- [x]') + text.count('- [X]')
unchecked = text.count('- [ ]')
return checked, unchecked
# Itera sobre las issues cerradas
for issue in closed_issues:
has_unchecked = False
# Verifica que el cuerpo de la issue no sea None
if issue.body is not None and '- [ ]' in issue.body:
has_unchecked = True
# Si no se encontraron en el body, busca en los comentarios
if not has_unchecked:
comments = issue.get_comments()
for comment in comments:
if '- [ ]' in comment.body:
has_unchecked = True
break
if has_unchecked:
issues_con_checkboxes_desactivados.append(issue)
# Imprime el listado de issues con checkboxes desactivados
print("Issues con checkboxes desactivados:")
for issue in issues_con_checkboxes_desactivados:
issue_url = f'{REPO_URL}/issues/{issue.number}'
print(f"Issue #{issue.number}: {issue.title} ({issue_url})")
# Crear tabla en formato markdown
table_header = "| Issue | Name | Progress | Last Modification |\n"
table_separator = "|-------|------|----------|------------------|\n"
table_rows = ""
for issue in issues_con_checkboxes_desactivados:
issue_link = f"[#{issue.number}]({REPO_URL}/issues/{issue.number})"
issue_name = issue.title.replace("|", "\\|") # Escapar pipes en el título
last_modified = issue.updated_at.strftime("%Y-%m-%d %H:%M")
# Contar checkboxes en el body de la issue
checked_body, unchecked_body = count_checkboxes(issue.body)
# Contar checkboxes en los comentarios
checked_comments = 0
unchecked_comments = 0
comments = issue.get_comments()
for comment in comments:
c_checked, c_unchecked = count_checkboxes(comment.body)
checked_comments += c_checked
unchecked_comments += c_unchecked
# Total de checkboxes
total_checked = checked_body + checked_comments
total_unchecked = unchecked_body + unchecked_comments
total_checkboxes = total_checked + total_unchecked
progress = f"{total_checked} / {total_checkboxes}"
table_rows += f"| {issue_link} | {issue_name} | {progress} | {last_modified} |\n"
# Crear el nuevo body de la issue
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S UTC")
new_body = f"""# Pending Tasks Report
**Last Updated:** {current_time}
**Total Issues Found:** {len(issues_con_checkboxes_desactivados)}
## Issues with Unchecked Checkboxes
{table_header}{table_separator}{table_rows}
---
*This report shows closed issues that still contain unchecked checkboxes (- [ ]) in their description or comments.*
*Progress column shows: completed tasks / total tasks*
"""
# Actualizar la issue #2490
try:
target_issue = repo.get_issue(TARGET_ISSUE_NUMBER)
target_issue.edit(body=new_body)
print(f"\n✅ Issue #{TARGET_ISSUE_NUMBER} updated successfully!")
print(f"Total issues with unchecked checkboxes: {len(issues_con_checkboxes_desactivados)}")
except Exception as e:
print(f"\n❌ Error updating issue #{TARGET_ISSUE_NUMBER}: {str(e)}")
EOF