Files
OmniRoute/scripts/scratch/harvest_issues.py
2026-05-01 08:36:51 -03:00

97 lines
2.3 KiB
Python

import json
import os
import subprocess
import re
issues = [1845, 1833, 1826, 1814, 1788, 1786, 1765, 1764, 1737, 1736, 1735, 1731, 1718, 1716, 1679, 1594, 1591, 1590, 1589, 1588, 1587, 1586, 1584, 1529]
os.makedirs('_ideia', exist_ok=True)
def slugify(value):
value = re.sub(r'\[Feature\]', '', value, flags=re.IGNORECASE)
value = re.sub(r'[^\w\s-]', '', value).strip().lower()
return re.sub(r'[-\s]+', '-', value)
for num in issues:
print(f"Processing #{num}...")
try:
res = subprocess.run(
['gh', 'issue', 'view', str(num), '--repo', 'diegosouzapw/OmniRoute', '--json', 'number,title,labels,body,comments,createdAt,author,assignees'],
capture_output=True, text=True, check=True
)
data = json.loads(res.stdout)
slug = slugify(data['title'])
filename = f"_ideia/{data['number']}-{slug}.md"
author = data['author']['login']
created_at = data['createdAt']
body = data['body']
comments = data['comments']
participants = set([author])
comments_str = ""
if comments:
for c in comments:
c_author = c['author']['login']
participants.add(c_author)
comments_str += f"**@{c_author}** ({c['createdAt']}):\n{c['body']}\n---\n"
else:
comments_str = "*No comments.*"
participants_list = "\n".join([f"- @{p}" for p in participants])
content = f"""# Feature: {data['title']}
> GitHub Issue: #{data['number']} — opened by @{author} on {created_at}
> Status: 📋 Cataloged | Priority: TBD
## 📝 Original Request
{body}
## 💬 Community Discussion
{comments_str}
### Participants
{participants_list}
### Key Points
- Needs detailed analysis
## 🎯 Refined Feature Description
Feature needs manual refinement and interpretation to fill logical gaps and outline high-level technical scope.
### What it solves
- TBD
### How it should work (high level)
1. TBD
2. TBD
### Affected areas
- TBD
## 📎 Attachments & References
- Check issue body for references
## 🔗 Related Ideas
- None yet
"""
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
except Exception as e:
print(f"Error processing {num}: {e}")
print("Done.")