It's sometimes necessary to have a `livecheck` block in an `on_macos`
or `on_linux` block. For example, a formula may be disabled on macOS
but not on Linux. In that scenario, we only want a `livecheck` block
to apply to Linux, so livecheck will automatically skip the formula
as disabled on macOS.
While this setup works on a technical level, `brew style` will give
an `on_linux cannot include livecheck` offense. This commit addresses
the issue by adding `livecheck` to `on_system_allowed_methods` in the
`ComponentsOrder` Rubocop.
This also updates `on_system_allowed_methods` to use the order in
`FORMULA_COMPONENT_PRECEDENCE_LIST`, which may make it a bit easier
for formula maintainers to read at a glance.
The existing logic in `#audit_head_branch` for identifying the `HEAD`
branch in a Git repository will give an ```undefined method `[]' for
nil:NilClass``` error when a repository doesn't provide this
reference. Expected output is as follows:
```
ref: refs/heads/master HEAD
1a8f9ac700873d1a08de31a17a2fd654245d5085 HEAD
```
However, I encountered this error for a repository with the following
output (i.e., where no symref is provided for HEAD):
```
f86be659718c0cd0a67f88b42f07044c23d0d028 HEAD
```
This commit resolves the error by modifying the related logic to
account for a `nil` value.
- Turns out we do need this. I lulled us into a false sense of security
by not deleting `sorbet/rbi/hidden-defintions/hidden.rbi` previously.
- If we do delete that file then Sorbet reveals >200 typechecking
issues.
- The docs on moving from `srb rbi` to `tapioca` say that we don't need
`hidden-definitions` anymore, but clearly we do. The blog post goes
into a lot of detail on why `rbi hidden-defintions` exists and the
fact that there's not an analogous command in Tapioca:
https://sorbet.org/blog/2022/07/27/srb-tapioca#whats-happening-with-srb-rbi-hidden-definitions
- Eventually we should try out `tapioca dsl`, since that's said to be a
"partial replacement" for `hidden-definitions`, and removing our
reliance on deprecated commands can only be a good thing?
- This was done with `brew typecheck --update --suggest-typed` which
(as of the previous commit) uses Spoom, yet another gem. I thought I'd
see how well it works. There are no Sorbet errors after these changes!
Otherwise, a global `core.symlinks = false` setting, likely in a WSL context, breaks Aliases and any other places that use symlinks.
Also enforce consistency in `git config` settings across instances.
Ref: https://github.com/Homebrew/homebrew-core/issues/112539