* Add "Force build" option to the release workflows (#5)
"Release all modules" and each per-module "Release <module>" workflow now
take a `force_build` toggle on the Run-workflow form (off by default).
When on, it replaces the current published release even if the version is
unchanged — e.g. the submodule pointer moved while metadata.json#version
stayed the same.
The toggle threads down the existing wrapper chain to the action's
`skip_if_published` input (inverted), so signing config still lives in one
place:
release-all.yml / release-<module>.yml --force_build-->
_release-module.yml --skip_if_published: !force_build-->
logos-modules-release-action/release.yml@v1
- _release-module.yml: new `force_build` input -> skip_if_published
- release-all.yml: dispatch input, passed through the matrix fan-out
- release-module.yml.template: dispatch input (so generated per-module
workflows get it too)
- catalog.sh: matching `--force` flag for `release` / `release-all`
- README: document the toggle
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* Regenerate per-module release workflows with Force build option
The shared workflow machinery now carries the `force_build` toggle (synced
from logos-modules-release-base via the merge of #5), but the 14 existing
per-module `release-<module>.yml` files were generated from the old
template and still used `workflow_dispatch: {}`. Regenerate them from the
updated template so each per-module "Release <module>" run also exposes the
Force build option (replace the current published release when the version
is unchanged).
Mechanically identical to re-running scripts/add-module.sh's template
substitution; the only change per file is the force_build input + its
passthrough to _release-module.yml.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* scripts: add catalog.sh — run the catalog workflows via gh
Publishing, unpublishing, and re-indexing a catalog meant opening the
repo's Actions tab and clicking "Run workflow" — for this repo and for
every fork. add-module.sh already covers the add-a-submodule step;
this is the missing CLI counterpart for *running* the workflows.
scripts/catalog.sh wraps `gh` with subcommands:
release [<module>] trigger release-<module>.yml; no arg lists the
catalog's modules (discovered from
release-*.yml at runtime)
release-all trigger release-all.yml
rebuild-index trigger rebuild-index.yml
unpublish <module> [<version>] [--dry-run] [--keep-tags]
trigger unpublish.yml; mirrors the workflow
input defaults (real delete, delete_tags=true).
An interactive y/N guard fires only at a TTY, so
piped/CI use still matches the workflow's own
no-confirmation behaviour
status recent workflow runs (gh run list)
watch [<run-id>] follow a run to completion (gh run watch)
--watch on the trigger subcommands follows the just-created run —
resolved by diffing the workflow's newest run id before vs after the
trigger, since `gh workflow run` returns no id.
Every call targets the current repo via `gh` (which reads the git
remote) — nothing is hardcoded, so the same script works unchanged in
this base repo and in any fork. Preflight checks `gh` is installed +
authenticated and that the cwd is a catalog repo.
README: quick-start step 4 gains the `./scripts/catalog.sh release-all`
alternative; the Layout tree lists the new script.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* scripts/catalog.sh: address PR review
Two fixes from the PR #2 Copilot review:
* print_usage read $0 after the script had already cd'd to the repo
root — a relative invocation path (e.g. ../repo/scripts/catalog.sh)
wouldn't resolve afterwards, breaking --help/usage. Capture an
absolute SCRIPT_PATH from ${BASH_SOURCE[0]} before the cd and sed
that instead.
* follow_new_run printed an error when it couldn't resolve the
--watch'd run but still returned 0, so automation couldn't tell a
watch failure from success. It now returns 1 (the trigger itself
still succeeded); the status propagates out through run_workflow.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Consumes logos-co/logos-modules-release-action@v1. Mirrors the
logos-modules-v2 production architecture (two-tier reusable
workflows, single-source signing config, rolling index) stripped to
a template:
- logos-repo.json with CHANGE-ME placeholders
- empty .gitmodules + submodules/.gitkeep
- _release-module.yml: signing config in one place (defaults to
unsigned so a fresh fork works immediately; inline/external
documented inline)
- release-all.yml: discovers modules from .gitmodules at run time
(no hand-maintained matrix; clean no-op on an empty fork)
- release-module.yml.template + scripts/add-module.sh: one command
to add a submodule and generate its per-module workflow
- rebuild-index.yml: passthrough to the action's index rebuilder
- README: fork-oriented quick start
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>