8c24b83ea3
Three changes that only make sense together. **tools/**. check-branding.sh, brand-plugin.sh and branding.conf were accumulating in the repo root, and a deploy.sh/bat/ps1 set would land there too. They now live in tools/ and resolve the repo root explicitly rather than assuming their own directory is it, so they behave the same however they are invoked. **One name drives the rest.** branding.conf now derives the package name, the Rust types and the display name from PLUGIN_NAME, each overridable. Derivation-by-default removes a class of drift; the override matters because the derivation is sometimes invalid — "206 Prototype" derives to "206_prototype", which cargo rejects outright — and because PLUGIN_NAME is cosmetic while the package name is structural. A display tweak should not silently rename the crate, its bundle lookup, the CI command and the lockfile. This template overrides three of them, which a real plugin normally will not: its names are the template's own rather than derived from a product name. An overridden PKG that no longer matches the derivation is reported at info level, never failed. The override is usually deliberate; a display rename that forgot the package looks identical from here, and is not. **The site table is data.** branding-sites.tsv lists every place a name must appear and in what form; check-branding.sh iterates it instead of carrying 29 check calls in shell. The scripts are now identical across every plugin built from this template, with only the table and conf differing — which matters because the template and codename-206 had already diverged by two checks, so every sync was a shell merge. brand-plugin.sh regenerates the rows it owns and preserves the rest, so a hand-added row for a file this template does not ship survives a rename. Custom rows are value-substituted like any other tracked file, so they track the rename rather than going stale — the first cut excluded the whole table from substitution and got that wrong. brand-plugin.sh also gained an interactive mode: run it with no arguments and it prompts for each value with the current one as the default, so Enter keeps it and a run that answers nothing changes nothing. It only engages when there is a terminal to ask at, so CI gets the usage message and exit 2 rather than a hang. Verified by applying a full rename to a sandboxed copy: 8 files rewritten, 29 owned rows regenerated, 1 custom row preserved and substituted, checker green at 48/0/7, and the result compiles as bari_206. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WHt4DykxXaQnyaJfyS8KCn
2.7 KiB
2.7 KiB
| 1 | # branding-sites.tsv - every place a canonical name has to appear, and in what form. | |||
|---|---|---|---|---|
| 2 | # | |||
| 3 | # Generated and refreshed by tools/brand-plugin.sh; read by tools/check-branding.sh, | |||
| 4 | # which asserts each pattern is present in its file. Tab-separated, four columns: | |||
| 5 | # | |||
| 6 | # kind req = a missing file is a failure; opt = a missing file is a skip | |||
| 7 | # you added by hand. Custom rows are preserved across regeneration; | |||
| 8 | # owned rows are overwritten, so do not hand-edit those. | |||
| 9 | # file repo-relative path | |||
| 10 | # pattern literal text that must appear in that file, already resolved | |||
| 11 | # | |||
| 12 | # Adding a site for something the template does not ship is a one-line edit here | |||
| 13 | # | |||
| 14 | #kind | owner | file | pattern |
| 15 | req | pkg.bundler | bundler.toml | [nih_plug_template] |
| 16 | opt | pkg.ci | .github/workflows/ci.yaml | cargo xtask bundle nih_plug_template |
| 17 | opt | pkg.readme | README.md | cargo xtask bundle nih_plug_template |
| 18 | opt | display.notice | NOTICE | Plugin Name |
| 19 | req | struct.def | src/lib.rs | struct MyPlugin { |
| 20 | req | struct.plugin | src/lib.rs | impl Plugin for MyPlugin { |
| 21 | req | struct.clap | src/lib.rs | impl ClapPlugin for MyPlugin { |
| 22 | req | struct.vst3 | src/lib.rs | impl Vst3Plugin for MyPlugin { |
| 23 | req | struct.exportclap | src/lib.rs | nih_export_clap!(MyPlugin); |
| 24 | req | struct.exportvst3 | src/lib.rs | nih_export_vst3!(MyPlugin); |
| 25 | req | params.def | src/lib.rs | struct PluginParams { |
| 26 | req | params.default | src/lib.rs | impl Default for PluginParams { |
| 27 | req | params.field | src/lib.rs | params: Arc<PluginParams>, |