Skip to content

Plugin records as SSOT: generator, homepage_url, per-repo descriptions - #11

Merged
astrojuanlu merged 2 commits into
mainfrom
plugin-records
Oct 22, 2026
Merged

astrojuanlu merged 2 commits into
mainfrom
plugin-records

Conversation

@astrojuanlu

@astrojuanlu astrojuanlu commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Plugin records as the single source of truth for creation-time metadata.

  • Records: plugins/<plugin>-obs-studio.json (validated against plugins/schema.json) plus normalized .description.md sidecars
  • Generator: scripts/generate.py projects records into repos/<snap_name>.tfvars (tofu inputs only); DO-NOT-EDIT headers, freshness enforced by just check-generated in CI
  • Module: derives repo_name and homepage_url from snap_name; GitHub description = summary, homepage = https://snapcraft.io/<snap_name>
  • Copier: records are passed to copier directly (JSON is valid YAML) — the template computes all derived fields; the fill step supplies only plugin_name (from the filename) and the description sidecar

Generated repos were verified against the live repos in .. (snapcraft.yaml matches modulo per-release version and build-recipe hand-tuning).

@astrojuanlu
astrojuanlu force-pushed the plugin-records branch 3 times, most recently from 589a6c5 to 6b44899 Compare October 22, 2026 08:53
@astrojuanlu
astrojuanlu marked this pull request as ready for review October 22, 2026 08:53
Replace the hand-maintained per-repo tfvars with generated files
projected from hand-written plugin records - the single source of
truth for creation-time repo and snap metadata.

- plugins/<plugin>-obs-studio.json records (validated against
  plugins/schema.json) plus normalized one-paragraph-per-line
  .description.md sidecars
- scripts/generate.py projects records into repos/<snap_name>.tfvars
  (snap_name + summary only); generated files carry DO-NOT-EDIT
  headers and CI enforces freshness via Generated files are up to date.
- module derives repo_name and homepage_url from snap_name; GitHub
  description = summary, homepage = https://snapcraft.io/<snap_name>
- records are directly copier-consumable (JSON is valid YAML): the
  template computes all derived fields (title, website default,
  package_url); the fill step supplies only plugin_name (from the
  filename) and the description sidecar
- justfile gains gen and check-generated; workflow validate job runs
  them

Assisted-by: OpenRouter:z-ai/glm-5.3-flash pi
The global '*.tfvars' ignore swallowed the generated per-repo inputs,
so they were never committed; deleting the old placeholder files left
no tracked file under repos/ and CI checkouts lost the directory
entirely (cp: cannot stat 'repos'). Negate the ignore for repos/ and
add the four files; make check-generated fail with a clear message
when repos/ is missing.

Assisted-by: OpenRouter:z-ai/glm-5.3-flash pi
@astrojuanlu
astrojuanlu merged commit 9b0e636 into main Oct 22, 2026
3 checks passed
@astrojuanlu
astrojuanlu deleted the plugin-records branch October 22, 2026 08:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant