Update app.py
Browse files
app.py
CHANGED
|
@@ -3,7 +3,6 @@ from datetime import datetime, timedelta
|
|
| 3 |
import google.generativeai as genai
|
| 4 |
from github import Github, GithubException
|
| 5 |
import docx
|
| 6 |
-
import re
|
| 7 |
import tempfile
|
| 8 |
|
| 9 |
def generate_release_notes(github_repo, github_token, gemini_api_key, start_date, end_date):
|
|
@@ -38,43 +37,46 @@ def generate_release_notes(github_repo, github_token, gemini_api_key, start_date
|
|
| 38 |
Provide a concise summary for each item. Do not include any links, but keep issue numbers if present.
|
| 39 |
|
| 40 |
Important formatting instructions:
|
| 41 |
-
- Use
|
| 42 |
-
- Use
|
| 43 |
-
-
|
| 44 |
-
- Keep the text structure simple and easy to read
|
| 45 |
- Be sure to briefly explain the why and benefits of the change for average users that are non-technical
|
| 46 |
"""
|
| 47 |
|
| 48 |
response = model.generate_content(prompt)
|
| 49 |
release_notes = response.text
|
| 50 |
|
|
|
|
| 51 |
doc = docx.Document()
|
| 52 |
doc.add_heading('Release Notes', 0)
|
| 53 |
|
| 54 |
-
|
| 55 |
for line in release_notes.split('\n'):
|
| 56 |
line = line.strip()
|
| 57 |
-
if line.
|
| 58 |
-
doc.add_heading(line
|
| 59 |
-
|
| 60 |
-
elif line.startswith('## '):
|
| 61 |
-
doc.add_heading(line[3:], level=2)
|
| 62 |
-
current_list_style = None
|
| 63 |
-
elif line.startswith('- '):
|
| 64 |
-
if current_list_style is None:
|
| 65 |
-
current_list_style = doc.add_paragraph().style
|
| 66 |
-
current_list_style.name = 'List Bullet'
|
| 67 |
-
current_list_style.font.size = docx.shared.Pt(11)
|
| 68 |
-
doc.add_paragraph(line[2:], style=current_list_style)
|
| 69 |
elif line:
|
| 70 |
-
|
|
|
|
|
|
|
|
|
|
| 71 |
|
| 72 |
with tempfile.NamedTemporaryFile(delete=False, suffix='.docx') as temp_docx:
|
| 73 |
doc.save(temp_docx.name)
|
| 74 |
docx_path = temp_docx.name
|
| 75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
with tempfile.NamedTemporaryFile(delete=False, suffix='.md', mode='w', encoding='utf-8') as temp_md:
|
| 77 |
-
temp_md.write(
|
| 78 |
md_path = temp_md.name
|
| 79 |
|
| 80 |
return release_notes, docx_path, md_path
|
|
|
|
| 3 |
import google.generativeai as genai
|
| 4 |
from github import Github, GithubException
|
| 5 |
import docx
|
|
|
|
| 6 |
import tempfile
|
| 7 |
|
| 8 |
def generate_release_notes(github_repo, github_token, gemini_api_key, start_date, end_date):
|
|
|
|
| 37 |
Provide a concise summary for each item. Do not include any links, but keep issue numbers if present.
|
| 38 |
|
| 39 |
Important formatting instructions:
|
| 40 |
+
- Use plain text only, no special formatting
|
| 41 |
+
- Use section titles followed by a colon (e.g., "New Features:")
|
| 42 |
+
- Start each item on a new line
|
|
|
|
| 43 |
- Be sure to briefly explain the why and benefits of the change for average users that are non-technical
|
| 44 |
"""
|
| 45 |
|
| 46 |
response = model.generate_content(prompt)
|
| 47 |
release_notes = response.text
|
| 48 |
|
| 49 |
+
# Create DOCX file
|
| 50 |
doc = docx.Document()
|
| 51 |
doc.add_heading('Release Notes', 0)
|
| 52 |
|
| 53 |
+
current_section = None
|
| 54 |
for line in release_notes.split('\n'):
|
| 55 |
line = line.strip()
|
| 56 |
+
if line.endswith(':'):
|
| 57 |
+
doc.add_heading(line, level=1)
|
| 58 |
+
current_section = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
elif line:
|
| 60 |
+
if current_section is None:
|
| 61 |
+
current_section = doc.add_paragraph().style
|
| 62 |
+
current_section.name = 'List Bullet'
|
| 63 |
+
doc.add_paragraph(line, style=current_section)
|
| 64 |
|
| 65 |
with tempfile.NamedTemporaryFile(delete=False, suffix='.docx') as temp_docx:
|
| 66 |
doc.save(temp_docx.name)
|
| 67 |
docx_path = temp_docx.name
|
| 68 |
|
| 69 |
+
# Create Markdown file
|
| 70 |
+
markdown_content = "# Release Notes\n\n"
|
| 71 |
+
for line in release_notes.split('\n'):
|
| 72 |
+
line = line.strip()
|
| 73 |
+
if line.endswith(':'):
|
| 74 |
+
markdown_content += f"\n## {line}\n\n"
|
| 75 |
+
elif line:
|
| 76 |
+
markdown_content += f"- {line}\n"
|
| 77 |
+
|
| 78 |
with tempfile.NamedTemporaryFile(delete=False, suffix='.md', mode='w', encoding='utf-8') as temp_md:
|
| 79 |
+
temp_md.write(markdown_content)
|
| 80 |
md_path = temp_md.name
|
| 81 |
|
| 82 |
return release_notes, docx_path, md_path
|