From 3dcadd77026f4e05348950924aa57b98133998e3 Mon Sep 17 00:00:00 2001 From: Evan Reichard Date: Sat, 25 Jul 2026 22:15:28 -0400 Subject: [PATCH] refactor: move app packages under apps --- README.md | 13 +++++++------ {HomeAssistant => apps/HomeAssistant}/config.txt | 0 {HomeAssistant => apps/HomeAssistant}/main.lua | 0 {HomeAssistant => apps/HomeAssistant}/manifest.txt | 0 {Wordle => apps/Wordle}/main.lua | 0 {Wordle => apps/Wordle}/manifest.txt | 0 {Wordle => apps/Wordle}/words.txt | 0 catalog.txt | 4 ++-- scripts/update-manifests.py | 5 +++-- 9 files changed, 12 insertions(+), 10 deletions(-) rename {HomeAssistant => apps/HomeAssistant}/config.txt (100%) rename {HomeAssistant => apps/HomeAssistant}/main.lua (100%) rename {HomeAssistant => apps/HomeAssistant}/manifest.txt (100%) rename {Wordle => apps/Wordle}/main.lua (100%) rename {Wordle => apps/Wordle}/manifest.txt (100%) rename {Wordle => apps/Wordle}/words.txt (100%) diff --git a/README.md b/README.md index c0ceaba..954c83b 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,11 @@ https://gitea.va.reichard.io/evan/xteink-apps/raw/branch/main/catalog.txt ```text catalog.txt -/ - manifest.txt - main.lua - ... +apps/ + / + manifest.txt + main.lua + ... scripts/update-manifests.py ``` @@ -26,7 +27,7 @@ XTEINK-CATALOG|1 |||| ``` -Each generated `manifest.txt` contains every installable file in that app: +Each generated `apps//manifest.txt` contains every installable file in that app: ```text XTEINK-MANIFEST|1 @@ -37,7 +38,7 @@ App IDs and file paths cannot contain `|`. App IDs use only letters, numbers, `_ ## Adding or changing an app -1. Add or edit an app directory containing `main.lua`. +1. Add or edit an `apps/` directory containing `main.lua`. 2. Regenerate metadata: ```bash diff --git a/HomeAssistant/config.txt b/apps/HomeAssistant/config.txt similarity index 100% rename from HomeAssistant/config.txt rename to apps/HomeAssistant/config.txt diff --git a/HomeAssistant/main.lua b/apps/HomeAssistant/main.lua similarity index 100% rename from HomeAssistant/main.lua rename to apps/HomeAssistant/main.lua diff --git a/HomeAssistant/manifest.txt b/apps/HomeAssistant/manifest.txt similarity index 100% rename from HomeAssistant/manifest.txt rename to apps/HomeAssistant/manifest.txt diff --git a/Wordle/main.lua b/apps/Wordle/main.lua similarity index 100% rename from Wordle/main.lua rename to apps/Wordle/main.lua diff --git a/Wordle/manifest.txt b/apps/Wordle/manifest.txt similarity index 100% rename from Wordle/manifest.txt rename to apps/Wordle/manifest.txt diff --git a/Wordle/words.txt b/apps/Wordle/words.txt similarity index 100% rename from Wordle/words.txt rename to apps/Wordle/words.txt diff --git a/catalog.txt b/catalog.txt index cc3870d..4c3b850 100644 --- a/catalog.txt +++ b/catalog.txt @@ -1,3 +1,3 @@ XTEINK-CATALOG|1 -HomeAssistant|Home Assistant status cards|HomeAssistant/manifest.txt|177|27aa1f0edc78a5aeded413caf0508788fa597ee8f76a5b8515ec0c40c955d5be -Wordle|Guess the five-letter word in six tries|Wordle/manifest.txt|177|9977b49ffdbd67a254701b4fa38407fc9128a017673e3ce73560dea08a6a125e +HomeAssistant|Home Assistant status cards|apps/HomeAssistant/manifest.txt|177|27aa1f0edc78a5aeded413caf0508788fa597ee8f76a5b8515ec0c40c955d5be +Wordle|Guess the five-letter word in six tries|apps/Wordle/manifest.txt|177|9977b49ffdbd67a254701b4fa38407fc9128a017673e3ce73560dea08a6a125e diff --git a/scripts/update-manifests.py b/scripts/update-manifests.py index d21cfd6..ebde15e 100755 --- a/scripts/update-manifests.py +++ b/scripts/update-manifests.py @@ -11,6 +11,7 @@ import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent +APPS_DIR = ROOT / "apps" ID_PATTERN = re.compile(r"^[A-Za-z0-9_-]+$") DESCRIPTION_PATTERN = re.compile(r"^--\s*DESCRIPTION:\s*(.+?)\s*$") @@ -51,7 +52,7 @@ def build_manifest(app_dir: Path) -> bytes: def generated_files(): - apps = [path for path in ROOT.iterdir() if path.is_dir() and (path / "main.lua").is_file()] + apps = [path for path in APPS_DIR.iterdir() if path.is_dir() and (path / "main.lua").is_file()] apps.sort(key=lambda path: path.name.casefold()) manifests = {} @@ -61,7 +62,7 @@ def generated_files(): if not ID_PATTERN.fullmatch(app_id): raise ValueError(f"invalid app id: {app_id}") manifest = build_manifest(app_dir) - manifest_path = f"{app_id}/manifest.txt" + manifest_path = f"apps/{app_id}/manifest.txt" manifests[ROOT / manifest_path] = manifest catalog.append( f"{app_id}|{description(app_dir)}|{manifest_path}|{len(manifest)}|{sha256(manifest)}"