Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
84 changes: 84 additions & 0 deletions .github/scripts/update_manifests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import subprocess
import os
import yaml
import glob

def get_git_dates(path):
# Get all commit dates for the path
try:
# Use TZ=UTC to get dates in UTC format.
# --date=iso-strict-local with TZ=UTC gives format like 2023-01-01T00:00:00Z
cmd = ["git", "log", "--date=iso-strict-local", "--format=%ad", "--", path]
env = os.environ.copy()
env["TZ"] = "UTC"
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, env=env).decode("utf-8").strip()
if not output:
return None, None
dates = output.splitlines()
published = dates[-1] # oldest
updated = dates[0] # newest
return published, updated
except Exception as e:
print(f"Error getting dates for {path}: {e}")
return None, None

def update_manifest(manifest_path):
# Get the directory of the app
app_dir = os.path.dirname(manifest_path)

published, updated = get_git_dates(app_dir)
if not published:
print(f"Skipping {manifest_path} (no git history)")
return

# Check if we need to update
with open(manifest_path, 'r') as f:
try:
data = yaml.safe_load(f)
except Exception as e:
print(f"Error parsing YAML in {manifest_path}: {e}")
return

if data is None:
data = {}

changed = False
# Only set published if it's missing. This preserves historical dates
# even when running in a shallow clone.
if not data.get('published'):
data['published'] = published
changed = True

# Always update the 'updated' date to the latest commit
if data.get('updated') != updated:
data['updated'] = updated
changed = True

if changed:
print(f"Updating {manifest_path}: published={published}, updated={updated}")
with open(manifest_path, 'w') as f:
yaml.dump(data, f, sort_keys=False, default_flow_style=False, explicit_start=True)
Comment thread
brombomb marked this conversation as resolved.
Outdated

import sys
Comment thread
brombomb marked this conversation as resolved.
Outdated

def main():
if len(sys.argv) > 1:
# Use provided arguments (files or directories)
manifests = []
for arg in sys.argv[1:]:
if arg.endswith("manifest.yaml"):
manifests.append(arg)
elif os.path.isdir(arg):
m = os.path.join(arg, "manifest.yaml")
if os.path.exists(m):
manifests.append(m)
else:
# Scan all apps
manifests = glob.glob("apps/*/manifest.yaml")

print(f"Checking {len(manifests)} manifests.")
for m in manifests:
update_manifest(m)

if __name__ == "__main__":
main()
37 changes: 37 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
stages:
- metadata

update-app-metadata:
stage: metadata
image: python:3.11-slim
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
before_script:
- apt-get update && apt-get install -y git
- pip install PyYAML
script:
- |
if [[ "$CI_COMMIT_BEFORE_SHA" == "0000000000000000000000000000000000000000" ]]; then
echo "New branch or initial push, checking all apps..."
python3 .github/scripts/update_manifests.py
else
echo "Performing incremental update..."
TARGETS=$(git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA | grep '^apps/' | cut -d'/' -f1-2 | sort -u || true)
if [ -n "$TARGETS" ]; then
python3 .github/scripts/update_manifests.py $TARGETS
else
echo "No apps modified in this push."
fi
fi
- |
if [[ -n $(git status --porcelain) ]]; then
echo "Detected changes in app manifests. Committing updates..."
git config --global user.email "ci-bot@tronbyt-apps.community"
git config --global user.name "Tronbyt Metadata Bot"
git add apps/*/manifest.yaml
git commit -m "chore: auto-update manifest metadata [skip ci]"
# Requires GITLAB_TOKEN CI variable with write_repository scope
git push "https://oauth2:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git" HEAD:${CI_COMMIT_REF_NAME}
else
echo "No metadata updates required."
fi
12 changes: 7 additions & 5 deletions apps/3cellularautomata/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ recommendedInterval: 5
supports2x: true
category: entertainment
tags:
- art
- science
- gaming
- retro
- wide 2x support
- art
- science
- gaming
- retro
- wide 2x support
published: '2023-03-23T12:36:07Z'
updated: '2026-04-02T20:26:05Z'
10 changes: 6 additions & 4 deletions apps/GitHubContributions/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ recommendedInterval: 60
supports2x: true
category: utilities
tags:
- tech
- productivity
- dev-tools
- wide 2x support
- tech
- productivity
- dev-tools
- wide 2x support
published: '2026-01-10T08:59:05Z'
updated: '2026-05-01T01:08:29Z'
10 changes: 7 additions & 3 deletions apps/M365Status/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@
id: m365-status
name: M365 Status
summary: Shows current status of M365
desc: Simple app that looks at the Microsoft Admin Center Status RSS feed and shows the latest status and time of the last update. Visit https://status.cloud.microsoft for more info!
desc: Simple app that looks at the Microsoft Admin Center Status RSS feed and shows
the latest status and time of the last update. Visit https://status.cloud.microsoft
for more info!
author: M0ntyP
category: utilities
tags:
- utility
- admin
- utility
- admin
published: '2026-01-23T22:34:33Z'
updated: '2026-04-02T20:26:05Z'
11 changes: 7 additions & 4 deletions apps/OctoWatts/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@
id: octowatts
name: OctoWatts
summary: Live energy monitoring
desc: Octopus Energy live consumption monitor, diplays your current usage and one minute energy trend. Requires an Octopus Home Mini device.
desc: Octopus Energy live consumption monitor, diplays your current usage and one
minute energy trend. Requires an Octopus Home Mini device.
author: TomForeman86
recommendedInterval: 5
fileName: octowatts.star
packageName: OctoWatts
category: utilities
tags:
- utility
- smart-home
- tech
- utility
- smart-home
- tech
published: '2024-10-23T14:05:48Z'
updated: '2026-04-02T20:26:05Z'
6 changes: 4 additions & 2 deletions apps/aadailyreflect/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ packageName: aadailyreflect
recommendedInterval: 5
category: lifestyle
tags:
- lifestyle
- daily-reflection
- lifestyle
- daily-reflection
published: '2022-11-18T22:27:20Z'
updated: '2026-04-02T20:26:05Z'
5 changes: 4 additions & 1 deletion apps/abcnews/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@
id: abc-news
name: ABC News
summary: Displays ABC News Headlines
desc: Displays headlines from ABC News Australia. Select the topic from the dropdown and it will display the last 5 headlines.
desc: Displays headlines from ABC News Australia. Select the topic from the dropdown
and it will display the last 5 headlines.
author: M0ntyP
published: '2026-05-05T16:01:26Z'
updated: '2026-05-05T16:01:26Z'
8 changes: 5 additions & 3 deletions apps/abcradio/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ packageName: abcradio
recommendedInterval: 10
category: entertainment
tags:
- music
- real-time
- local
- music
- real-time
- local
published: '2024-02-01T22:50:22Z'
updated: '2026-04-02T20:26:05Z'
8 changes: 5 additions & 3 deletions apps/abstractclock/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ packageName: abstractclock
recommendedInterval: 0
category: clocks
tags:
- time
- digital-clock
- art
- time
- digital-clock
- art
published: '2022-04-04T15:46:29Z'
updated: '2026-04-02T20:26:05Z'
8 changes: 5 additions & 3 deletions apps/accidentfreedays/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ packageName: accidentfreedays
recommendedInterval: 240
category: utilities
tags:
- lifestyle
- utility
- tracking
- lifestyle
- utility
- tracking
published: '2023-08-12T12:20:03Z'
updated: '2026-04-02T20:26:05Z'
11 changes: 8 additions & 3 deletions apps/accuweather/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,17 @@
id: accuweather
name: AccuWeather
summary: AccuWeather forecast
desc: Display AccuWeather three day forecast based on AccuWeather location key. To request an AccuWeather API key, see https://developer.accuweather.com/getting-started. To determine AccuWeather location key, search https://www.accuweather.com for a location and extract trailing number, e.g. 2191987 for https://www.accuweather.com/en/us/lavallette/08735/weather-forecast/2191987.
desc: Display AccuWeather three day forecast based on AccuWeather location key. To
request an AccuWeather API key, see https://developer.accuweather.com/getting-started.
To determine AccuWeather location key, search https://www.accuweather.com for a
location and extract trailing number, e.g. 2191987 for https://www.accuweather.com/en/us/lavallette/08735/weather-forecast/2191987.
author: sudeepban
fileName: accuweather.star
packageName: accuweather
recommendedInterval: 5
category: weather
tags:
- weather
- local
- weather
- local
published: '2023-10-16T21:35:00Z'
updated: '2026-04-02T20:26:05Z'
6 changes: 4 additions & 2 deletions apps/acfilmshowtimes/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ packageName: acfilmshowtimes
recommendedInterval: 5
category: entertainment
tags:
- media
- theaters
- media
- theaters
published: '2023-03-14T18:48:18Z'
updated: '2026-05-01T16:28:33Z'
6 changes: 4 additions & 2 deletions apps/acidwarp/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ author: tavdog
recommendedInterval: 5
category: entertainment
tags:
- retro
- art
- retro
- art
published: '2025-02-03T23:05:56Z'
updated: '2026-04-02T20:26:05Z'
4 changes: 3 additions & 1 deletion apps/acnhvillager/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ packageName: acnhvillager
recommendedInterval: 5
category: entertainment
tags:
- gaming
- gaming
published: '2023-02-21T18:22:33Z'
updated: '2026-04-02T20:26:05Z'
4 changes: 3 additions & 1 deletion apps/actransit/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ packageName: actransit
recommendedInterval: 5
category: transit
tags:
- real-time
- real-time
published: '2023-03-02T17:17:36Z'
updated: '2026-04-02T20:26:05Z'
8 changes: 5 additions & 3 deletions apps/adafruitio/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ fileName: adafruitio.star
packageName: adafruitio
category: utilities
tags:
- tech
- smart-home
- utility
- tech
- smart-home
- utility
published: '2023-11-01T18:27:25Z'
updated: '2026-04-02T20:26:05Z'
4 changes: 3 additions & 1 deletion apps/adelaidemetro/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ fileName: adelaide_metro.star
packageName: adelaidemetro
recommendedInterval: 5
category: transit
tags:
tags: null
published: '2023-02-03T20:58:19Z'
updated: '2026-04-02T20:26:05Z'
6 changes: 4 additions & 2 deletions apps/advice/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ packageName: advice
recommendedInterval: 5
category: entertainment
tags:
- motivational
- media
- motivational
- media
published: '2022-09-15T19:22:14Z'
updated: '2026-04-02T20:26:05Z'
9 changes: 6 additions & 3 deletions apps/afl/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@
id: afl
name: AFL
summary: AFL standings
desc: Display the current Australian Football League standings and the next game time/date for a selected team.
desc: Display the current Australian Football League standings and the next game time/date
for a selected team.
author: andymcrae
fileName: afl.star
packageName: afl
recommendedInterval: 5
category: sports
tags:
- afl
- football
- afl
- football
published: '2022-06-09T16:52:13Z'
updated: '2026-04-02T20:26:05Z'
8 changes: 5 additions & 3 deletions apps/aflladder/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ packageName: aflladder
recommendedInterval: 5
category: sports
tags:
- real-time
- afl
- football
- real-time
- afl
- football
published: '2023-03-23T12:25:31Z'
updated: '2026-04-02T20:26:05Z'
6 changes: 4 additions & 2 deletions apps/aflscores/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ packageName: aflscores
recommendedInterval: 5
category: sports
tags:
- afl
- football
- afl
- football
published: '2023-03-23T12:24:44Z'
updated: '2026-04-21T20:43:23Z'
10 changes: 6 additions & 4 deletions apps/airbnbcalendar/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ packageName: airbnbcalendar
recommendedInterval: 60
category: utilities
tags:
- tech
- finance
- utility
- productivity
- tech
- finance
- utility
- productivity
published: '2023-03-14T19:16:32Z'
updated: '2026-04-02T20:26:05Z'
Loading
Loading