Skip to content

Commit 85486ec

Browse files
committed
New workflows
1 parent 74ed98d commit 85486ec

File tree

3 files changed

+68
-72
lines changed

3 files changed

+68
-72
lines changed

.github/workflows/fetch-releases.yml

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ jobs:
4848
# Initialize GitHub client
4949
github_token = os.environ.get('GITHUB_TOKEN')
5050
core_token = os.environ.get('CORE_TOKEN', github_token) # Fallback to GITHUB_TOKEN
51-
51+
5252
# Use core token for private repo access
5353
gh = Github(core_token)
54-
54+
5555
# List of all faneX-ID repositories
5656
repos = [
5757
'faneX-ID/core',
@@ -64,21 +64,21 @@ jobs:
6464
'faneX-ID/homeassistant-addon',
6565
'faneX-ID/faneX-ID.github.io'
6666
]
67-
67+
6868
all_releases = {}
6969
all_versions = {}
70-
70+
7171
for repo_name in repos:
7272
try:
7373
print(f"\n📦 Fetching releases from {repo_name}...")
7474
repo = gh.get_repo(repo_name)
75-
75+
7676
# Get all releases (stable and pre-releases)
7777
try:
7878
releases = repo.get_releases()
7979
stable_releases = []
8080
prereleases = []
81-
81+
8282
for release in releases:
8383
release_data = {
8484
'name': release.title or release.tag_name,
@@ -89,16 +89,16 @@ jobs:
8989
'body': release.body[:500] if release.body else None, # Truncate
9090
'draft': release.draft
9191
}
92-
92+
9393
if release.prerelease:
9494
prereleases.append(release_data)
9595
else:
9696
stable_releases.append(release_data)
97-
97+
9898
# Get latest stable and latest pre-release
9999
latest_stable = stable_releases[0] if stable_releases else None
100100
latest_prerelease = prereleases[0] if prereleases else None
101-
101+
102102
all_releases[repo_name] = {
103103
'latest_stable': latest_stable,
104104
'latest_prerelease': latest_prerelease,
@@ -107,13 +107,13 @@ jobs:
107107
'total_stable': len(stable_releases),
108108
'total_prereleases': len(prereleases)
109109
}
110-
110+
111111
if latest_stable:
112112
print(f" ✅ Latest stable: {latest_stable['tag']}")
113113
if latest_prerelease:
114114
print(f" ✅ Latest pre-release: {latest_prerelease['tag']}")
115115
print(f" 📊 Total: {len(stable_releases)} stable, {len(prereleases)} pre-releases")
116-
116+
117117
except Exception as e:
118118
print(f" ⚠️ No releases found: {e}")
119119
all_releases[repo_name] = {
@@ -124,7 +124,7 @@ jobs:
124124
'total_stable': 0,
125125
'total_prereleases': 0
126126
}
127-
127+
128128
# Get version info from versions.json (for core repo)
129129
if repo_name == 'faneX-ID/core':
130130
try:
@@ -135,20 +135,20 @@ jobs:
135135
print(f" ✅ Fetched version info")
136136
except Exception as e:
137137
print(f" ⚠️ Could not fetch versions.json: {e}")
138-
138+
139139
except Exception as e:
140140
print(f" ❌ Error fetching {repo_name}: {e}")
141141
all_releases[repo_name] = None
142-
142+
143143
# Save releases data
144144
releases_file = 'docs/data/releases.json'
145145
os.makedirs('docs/data', exist_ok=True)
146-
146+
147147
output_data = {
148148
'last_updated': datetime.utcnow().isoformat() + 'Z',
149149
'repositories': {}
150150
}
151-
151+
152152
for repo_name, release_data in all_releases.items():
153153
repo_short = repo_name.replace('faneX-ID/', '')
154154
output_data['repositories'][repo_short] = {
@@ -161,17 +161,17 @@ jobs:
161161
'total_prereleases': release_data.get('total_prereleases', 0),
162162
'version_info': all_versions.get(repo_name)
163163
}
164-
164+
165165
with open(releases_file, 'w', encoding='utf-8') as f:
166166
json.dump(output_data, f, indent=2, ensure_ascii=False)
167-
167+
168168
print(f"\n✅ Saved releases data to {releases_file}")
169169
print(f" Total repositories: {len(all_releases)}")
170170
total_stable = sum(r.get('total_stable', 0) for r in all_releases.values())
171171
total_prereleases = sum(r.get('total_prereleases', 0) for r in all_releases.values())
172172
print(f" Total stable releases: {total_stable}")
173173
print(f" Total pre-releases: {total_prereleases}")
174-
174+
175175
# Set output
176176
with open(os.environ['GITHUB_OUTPUT'], 'a') as f:
177177
f.write(f"repositories_count={len(all_releases)}\n")
@@ -192,17 +192,17 @@ jobs:
192192
193193
core_token = os.environ.get('CORE_TOKEN', os.environ.get('GITHUB_TOKEN'))
194194
gh = Github(core_token)
195-
195+
196196
try:
197197
repo = gh.get_repo('faneX-ID/core')
198-
198+
199199
# Get recent workflow runs
200200
workflows = repo.get_workflows()
201201
build_info = {
202202
'last_updated': datetime.utcnow().isoformat() + 'Z',
203203
'workflows': []
204204
}
205-
205+
206206
for workflow in workflows[:10]: # Limit to 10 workflows
207207
try:
208208
runs = workflow.get_runs()[:5] # Get last 5 runs
@@ -211,7 +211,7 @@ jobs:
211211
'id': workflow.id,
212212
'runs': []
213213
}
214-
214+
215215
for run in runs:
216216
workflow_data['runs'].append({
217217
'status': run.status,
@@ -221,22 +221,22 @@ jobs:
221221
'head_branch': run.head_branch,
222222
'html_url': run.html_url
223223
})
224-
224+
225225
if workflow_data['runs']:
226226
build_info['workflows'].append(workflow_data)
227227
except Exception as e:
228228
print(f" ⚠️ Error fetching workflow {workflow.name}: {e}")
229-
229+
230230
# Save build info
231231
build_file = 'docs/data/builds.json'
232232
os.makedirs('docs/data', exist_ok=True)
233-
233+
234234
with open(build_file, 'w', encoding='utf-8') as f:
235235
json.dump(build_info, f, indent=2, ensure_ascii=False)
236-
236+
237237
print(f"✅ Saved build info to {build_file}")
238238
print(f" Workflows tracked: {len(build_info['workflows'])}")
239-
239+
240240
except Exception as e:
241241
print(f"⚠️ Could not fetch build info: {e}")
242242
# Create empty file
@@ -260,39 +260,39 @@ jobs:
260260
261261
core_token = os.environ.get('CORE_TOKEN', os.environ.get('GITHUB_TOKEN'))
262262
gh = Github(core_token)
263-
263+
264264
try:
265265
repo = gh.get_repo('faneX-ID/core')
266-
266+
267267
# Get versions.json
268268
versions_content = repo.get_contents('.github/versions.json', ref='main')
269269
versions_data = json.loads(versions_content.decoded_content.decode())
270-
270+
271271
# Get project manifest if available
272272
project_manifest = None
273273
try:
274274
manifest_content = repo.get_contents('project_manifest.json', ref='main')
275275
project_manifest = json.loads(manifest_content.decoded_content.decode())
276276
except Exception:
277277
pass
278-
278+
279279
version_info = {
280280
'last_updated': datetime.utcnow().isoformat() + 'Z',
281281
'versions': versions_data,
282282
'project_manifest': project_manifest
283283
}
284-
284+
285285
# Save version info
286286
version_file = 'docs/data/versions.json'
287287
os.makedirs('docs/data', exist_ok=True)
288-
288+
289289
with open(version_file, 'w', encoding='utf-8') as f:
290290
json.dump(version_info, f, indent=2, ensure_ascii=False)
291-
291+
292292
print(f"✅ Saved version info to {version_file}")
293293
print(f" Schema Version: {versions_data.get('manifest_schema_version', 'N/A')}")
294294
print(f" Min Core Version: {versions_data.get('min_core_version', 'N/A')}")
295-
295+
296296
except Exception as e:
297297
print(f"⚠️ Could not fetch version info: {e}")
298298
# Create fallback file
@@ -313,13 +313,11 @@ jobs:
313313
run: |
314314
git config --local user.email "action@github.com"
315315
git config --local user.name "GitHub Action"
316-
316+
317317
if [[ -n $(git status -s) ]]; then
318318
git add docs/data/*.json
319319
git commit -m "chore: update releases and version info [skip ci]" || echo "No changes to commit"
320320
git push || echo "Nothing to push"
321321
else
322322
echo "No changes to commit"
323323
fi
324-
325-

docs/releases.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ fetch('/docs/data/releases.json')
3232
renderReleases('all');
3333
})
3434
.catch(error => {
35-
document.getElementById('releases-container').innerHTML =
35+
document.getElementById('releases-container').innerHTML =
3636
`<p style="color: red;">Error loading releases: ${error.message}</p>`;
3737
});
3838

@@ -43,29 +43,29 @@ function filterReleases() {
4343

4444
function renderReleases(filter) {
4545
if (!releasesData) return;
46-
46+
4747
const container = document.getElementById('releases-container');
4848
container.innerHTML = '';
49-
49+
5050
const lastUpdated = new Date(releasesData.last_updated).toLocaleString();
5151
container.innerHTML += `<p><em>Last updated: ${lastUpdated}</em></p>`;
52-
52+
5353
const repos = Object.entries(releasesData.repositories);
54-
54+
5555
repos.forEach(([repoName, repoData]) => {
5656
// Skip if no releases match filter
5757
if (filter === 'stable' && !repoData.latest_stable) return;
5858
if (filter === 'prerelease' && !repoData.latest_prerelease) return;
5959
if (filter === 'all' && !repoData.latest_stable && !repoData.latest_prerelease) return;
60-
60+
6161
const card = document.createElement('div');
6262
card.className = 'release-card';
6363
card.style.cssText = 'border: 1px solid #ddd; border-radius: 8px; padding: 16px; margin: 16px 0;';
64-
64+
6565
const title = document.createElement('h3');
6666
title.textContent = repoName;
6767
card.appendChild(title);
68-
68+
6969
// Display stable releases
7070
if (repoData.latest_stable && (filter === 'all' || filter === 'stable')) {
7171
const stableSection = document.createElement('div');
@@ -82,7 +82,7 @@ function renderReleases(filter) {
8282
</div>
8383
`;
8484
card.appendChild(stableSection);
85-
85+
8686
// Show additional stable releases if available
8787
if (repoData.stable_releases && repoData.stable_releases.length > 1 && filter === 'all') {
8888
const moreStable = document.createElement('details');
@@ -101,7 +101,7 @@ function renderReleases(filter) {
101101
card.appendChild(moreStable);
102102
}
103103
}
104-
104+
105105
// Display pre-releases
106106
if (repoData.latest_prerelease && (filter === 'all' || filter === 'prerelease')) {
107107
const prereleaseSection = document.createElement('div');
@@ -119,7 +119,7 @@ function renderReleases(filter) {
119119
</div>
120120
`;
121121
card.appendChild(prereleaseSection);
122-
122+
123123
// Show additional pre-releases if available
124124
if (repoData.prereleases && repoData.prereleases.length > 1 && filter === 'all') {
125125
const morePrereleases = document.createElement('details');
@@ -138,15 +138,15 @@ function renderReleases(filter) {
138138
card.appendChild(morePrereleases);
139139
}
140140
}
141-
141+
142142
// Show summary if no releases match filter
143143
if (!repoData.latest_stable && !repoData.latest_prerelease) {
144144
const noRelease = document.createElement('p');
145145
noRelease.textContent = 'No releases yet';
146146
noRelease.style.color = '#999';
147147
card.appendChild(noRelease);
148148
}
149-
149+
150150
// Version info
151151
if (repoData.version_info) {
152152
const versionInfo = document.createElement('div');
@@ -160,10 +160,10 @@ function renderReleases(filter) {
160160
`;
161161
card.appendChild(versionInfo);
162162
}
163-
163+
164164
container.appendChild(card);
165165
});
166-
166+
167167
// Show summary
168168
if (filter === 'all') {
169169
const totalStable = repos.reduce((sum, [, r]) => sum + (r.total_stable || 0), 0);
@@ -179,4 +179,3 @@ function renderReleases(filter) {
179179
}
180180
}
181181
</script>
182-

0 commit comments

Comments
 (0)