Several tap hooks only substitute install-time paths in generated files
and do not need arbitrary Ruby execution.
- expose the familiar `inreplace` name and option defaults
- serialise literal substitutions, regular expressions and their flags
- accept regexp literals in formula and cask step validators
- expand only fixed install-time template tokens
- share validation and execution between formulae and casks
`brew fetch sonarqube-cli --arch=intel` fails with a confusing
`curl: (22) ... 403` because the cask builds its URL from the `arch`
stanza and has a single `sha256` inside `on_macos`, so under an arch
the cask doesn't support both still resolve and it attempts to fetch a
URL that doesn't exist upstream.
This will skip an os/arch combination when the loaded cask's
`depends_on.arch` excludes that architecture, reusing the existing
"not supported" warning:
$ brew fetch --cask sonarqube-cli --arch=intel
Warning: Cask sonarqube-cli is not supported on os golden_gate and arch intel
Adds a `depends-on-arch-arm64` test cask replicating the behavior
and a `#cask_downloads` spec covering the skip.
- Make role and stipend reviews objective and repeatable each quarter.
- Add `--maintainer-report-csv=YEAR-Q` for governance periods.
- Read quarter-end roles and tenure from `Homebrew/brew` Git history.
- Attribute merged PRs and coauthors from the three primary repositories.
- Query GitHub by merge date only when local Git history is absent.
- Use GitHub's approved-review search only where Git lacks review data.
- Cache completed searches in Homebrew's existing prunable cache.
- Preserve accurate cross-repository role checks when counts are capped.
- Write compact CSV output to stdout and the current directory.
- Align thresholds and two-quarter downgrades with governance policy.
- Cover historical identities, attribution, caps and caching in tests.
Each `Homebrew::Cmd::Services::*Subcommand` defined a `TRIGGERS`
constant, but nothing reads it: the subcommand names and aliases used to
dispatch `brew services <subcommand>` come from `subcommand_name` and the
`subcommand_args aliases:` declaration in `AbstractCommand`. The
constants (and the four specs asserting their contents) are dead
duplication, so remove them.
Claude-Session: https://claude.ai/code/session_011BgWRBydtdkvt8ocqH4nj9
Armbian publishes nightly -trunk.N images, so a new os_version row
appears in analytics roughly every day which can be collapsed
into singular versions by the operating system version.
This performs 4 normalisations -
- the nightly build number is dropped
- the _community / -unofficial / OS name variants fold into Armbian
- inconsistent zero padding (26.05 vs 26.5) is unified
- the codename is lowercased
- Run structured steps inside the existing post-install subprocess so
filesystem and network restrictions match legacy hooks.
- Route installs and `brew postinstall` through the sandboxed path even
when no Ruby `post_install` hook remains.
- Preserve structured-step ordering and versioned-prefix resolution.