@@ -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-
0 commit comments