repocfg: accept array form for command run #51
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally filed by @coilysiren on 2026-05-09T06:16:12Z - https://github.com/coilysiren/coily/issues/106
The
runkey in.coily/coily.yamlis currently a string that gets split viastrings.Fieldsat load time:Whitespace-split papers over the fact that the post-split tokens are what actually feed into argv. The string form is a leaky abstraction that looks like a shell command but isn't one (no quoting, no metacharacters, no expansion). Replace it with an explicit argv array as a breaking migration.
Target shape
policy.ValidateArgruns on each token, same rule as today. The shorthand<name>: <command line>(string scalar in place of the mapping) is also retired.Breaking-migration plan
This is a breaking change. Scalar
runand the string-scalar shorthand both hard-fail at load time once the new schema ships. No deprecation window, no auto-split fallback. The whole point of the migration is that "looks like a shell command, isn't one" is the bug; preserving the scalar path while introducing the array path keeps the bug.Rollout sequence:
runreturns a clear error pointing at the offending file, key, and the array form.scripts/that walkscoilysiren/*and rewrites every.coily/coily.yamlfrom scalar to array form. Mechanical, idempotent, no judgment calls.docs/repocfg-schema.md), one commit per repo.brew upgradeforward, any unmigrated repo fails fast with the new error.Why a breaking migration vs additive
Why now
docs/repocfg-schema.mdjust landed and describes the de facto schema (#92 closed).Out of scope
Adjacent
Companion to #105 (schema enforcement) and
docs/repocfg-schema.md. Land #105 first so the new error infrastructure (file path + key + line number) is available; this issue reuses it.