Skip to content

Commit 985a97c

Browse files
Release List: Additional Output for App
(Copilot Assisted Proposal)
1 parent a5f93b2 commit 985a97c

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

.github/workflows/update_releases_list.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# Build OpenKNX Release Overviews for Integration in Pages, Wiki and Toolbox
2+
# 2025 CK (OpenKNX)
3+
14
name: Update Releases
25

36
on:
@@ -31,6 +34,6 @@ jobs:
3134
run: |
3235
git config --global user.name 'github-actions[bot]'
3336
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
34-
git add releases_list.html releases.json
37+
git add releases_list.html releases.json releases/
3538
git commit -m 'Update releases list and generate JSON'
3639
git push

scripts/update_releases.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# Build OpenKNX Release Overviews for Integration in Pages, Wiki and Toolbox
2+
# 2025 CK (OpenKNX)
3+
14
import requests
25
import json
36
import os
@@ -43,12 +46,36 @@ def fetch_release_details(filtered_releases):
4346
}
4447
with open('releases.json', 'w') as outfile:
4548
json.dump(releases_data, outfile, indent=4)
49+
return releases_data
50+
51+
def create_html_for_repo(repo_name, details):
52+
os.makedirs('releases', exist_ok=True)
53+
with open(f'releases/{repo_name}.html', 'w') as outfile:
54+
outfile.write('<ul>\n')
55+
latest_release = None
56+
latest_prerelease = None
57+
for release in details["releases"]:
58+
if not release["prerelease"]:
59+
if latest_release is None or release["published_at"] > latest_release["published_at"]:
60+
latest_release = release
61+
else:
62+
if latest_prerelease is None or release["published_at"] > latest_prerelease["published_at"]:
63+
latest_prerelease = release
64+
65+
if latest_release:
66+
outfile.write(f'<li><a href="{latest_release["html_url"]}">Latest Release: {latest_release["name"]} ({latest_release["tag_name"]})</a></li>\n')
67+
68+
if latest_prerelease:
69+
outfile.write(f'<li><a href="{latest_prerelease["html_url"]}">Latest Prerelease: {latest_prerelease["name"]} ({latest_prerelease["tag_name"]})</a></li>\n')
70+
71+
outfile.write('</ul>\n')
4672

4773
def update_html():
4874
with open('releases.json', 'r') as infile, open('releases_list.html', 'w') as outfile:
4975
data = json.load(infile)
5076
outfile.write('<ul>\n')
5177
for repo, details in data.items():
78+
create_html_for_repo(repo, details)
5279
outfile.write(f'<li><strong>{repo}</strong><ul>\n')
5380
for release in details["releases"]:
5481
outfile.write(f'<li><a href="{release["html_url"]}">{release["name"]} ({release["tag_name"]})</a></li>\n')
@@ -57,7 +84,7 @@ def update_html():
5784

5885
def main():
5986
filtered_releases = fetch_and_filter_releases()
60-
fetch_release_details(filtered_releases)
87+
releases_data = fetch_release_details(filtered_releases)
6188
update_html()
6289

6390
if __name__ == "__main__":

0 commit comments

Comments
 (0)