31881 Commits

Author SHA1 Message Date
Michael Cho
2d884981c2
cleaner: add types
Signed-off-by: Michael Cho <michael@michaelcho.dev>
2024-03-11 11:46:23 -04:00
Michael Cho
a30f6c48f2
Merge pull request #16865 from cho-m/cask-audit-@
cask/audit: allow @ for versioned casks
2024-03-11 09:07:28 -04:00
apainintheneck
11b67e04c2 untap: add tests for finding formulae/casks in each tap
These are regression tests to make sure that this logic is reproducible.
If this logic is not working, it might mean that someone removes a tap
accidentally that still includes a formula or cask that they currently
have installed.

The tests are extravagant and over-engineered but I'm not sure that
there's an easier way to do this without massive integration tests.
2024-03-10 22:33:44 -07:00
apainintheneck
ff495a2e44 untap: add new module to make these refactored methods easier to test 2024-03-10 22:33:33 -07:00
apainintheneck
46a32f90c4 cmd/untap: refactor logic into methods to facilitate testing 2024-03-10 22:33:33 -07:00
apainintheneck
819af3cbdd cmd/untap: fix installed formula & cask check
This wasn't working before for a few reasons.

1. It never got past the installed name check because the
installed name sets had short names and the tap names were
long names including the tap namespace too. Now we just trim the
long name before comparing it to the installed name set.

Before:

```
["name"].include?("tap/full/name") # always false
```

After:

```
["name"].include("tap/full/name".split("/").last) # sometimes true
```

2. The names we were trying to load formulae and casks with
were incorrect.

Before:

```
tap = Tap.fetch("homebrew/cask-versions")
token = "homebrew/cask-versions/token"

cask = Cask::CaskLoader.load("#{tap}/#{token}")
```

After:

```
token = "homebrew/cask-versions/token"
cask = CaskCaskLoader.load(token)
```
2024-03-10 22:33:33 -07:00
Michael Cho
29175df63f
cleanup: track removed links & dirs during dry-run
This allows dry-run to display any directories that will be removed
as a result of previous removal steps.

Signed-off-by: Michael Cho <michael@michaelcho.dev>
2024-03-10 19:02:49 -04:00
Bo Anderson
d1cebef8c5
dev-cmd/pr-*: remove Oxford commas previously missed by linter 2024-03-10 22:31:44 +00:00
Bo Anderson
754d580a91
Replace ronn with Kramdown's converter 2024-03-10 22:31:38 +00:00
Michael Cho
74f310577f
cleaner: remove RECORD and modify INSTALLER
According to [Python specification][1], we should remove `RECORD` file
to prevent changes to installed formula files via other tools, e.g. pip.
This also improves chances of generating an `all` bottle as it avoids
diff due to checksums of HOMEBREW_PREFIX present files. Also modify
`INSTALLER` file to indicate that brew is managing the Python package.

[1]: https://packaging.python.org/en/latest/specifications/recording-installed-packages/#intentionally-preventing-changes-to-installed-packages

Signed-off-by: Michael Cho <michael@michaelcho.dev>
2024-03-10 10:22:55 -04:00
apainintheneck
ca5dfadfaf search: update logic to reflect changes to CoreCaskTap#cask_tokens
It was possible for the cask tokens to be included twice in the
cask_tokens array. This was cancelled out by the fact that we |=
the arrays together but still it was unnecessary work that is best
avoided and makes the code harder to reason about. This is simpler.
2024-03-09 19:38:43 -08:00
apainintheneck
6e0e78cadd tap: CoreCaskTap#cask_tokens should always return short names
This seems to be a bug with how we handle name shortening for the
core cask tap. The core tap always returns short formula names
and returning long names from the core cask tap when not using
the API leads to unexpected behavior.

Specifically this can trick the `brew untap` command into thinking
that there aren't any installed casks in the core cask tap and that
it can be removed even when that is not the case.

One risk here is that the full names were used when caching
descriptions so descriptions could be out of date for people in
the short term though hopefully that's not the end of the world.
2024-03-09 18:59:31 -08:00
apainintheneck
08442734ab s/Tap.reverse_tap_migrations_renames/Tap.tap_migration_oldnames/ 2024-03-09 10:27:22 -08:00
apainintheneck
e6a453a20d tap: add some tests
- Add tests for:
  - `Tap.each`
  - `Tap.installed`
  - `Tap.all`
  - `Tap#reverse_tap_migrations_renames`
  - `Tap.reverse_tap_migrations_renames`
2024-03-09 10:27:22 -08:00
apainintheneck
d4a273443c tap: add #reverse_tap_migrations_renames to speed things up
This gets used by `Tap.reverse_tap_migrations_renames` and reduces
the amount of information that needs to be calculated on the fly
every time.
2024-03-09 10:25:47 -08:00
Michael Cho
85a08bcdc4
cask/audit: allow @ for versioned casks
Signed-off-by: Michael Cho <michael@michaelcho.dev>
2024-03-09 12:20:27 -05:00
apainintheneck
fb8c0d2b30 s/Tap.select(&:installed?)/Tap.installed/ 2024-03-08 23:22:00 -08:00
apainintheneck
3834ef1b73 tap: cache more things at the Tap level
I added two new methods to cache both installed and all taps.
All taps includes core taps no matter if they're installed locally
since they're always provided by the API anyway.

This makes it easier to cache `Tap.each` while making the code
easier to reason about. It also will be useful because we'll
be able to avoid the `Tap.select(&:installed?` pattern that has
recently invaded the codebase.

Note: I also stopped clearing all tap instance caches before
tests. Running `Tap.each` would cache existing taps which would
lead to unexpected behavior since the only existing tap before
each test is the core tap. This is the only tap whose directory
is not cleaned up between tests so we just clear it's cache directly.
We also now clear all tap instances after tests as well regardless
of whether the API was used that time.
2024-03-08 23:22:00 -08:00
Patrick Linnane
4348e06888
Merge pull request #16857 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-static-and-runtime-and-sorbet-runtime-0.5.11287 2024-03-08 11:00:51 -08:00
BrewTestBot
bee5f216ee
Update RBI files for rubocop-ast.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2024-03-08 18:50:12 +00:00
BrewTestBot
ba4cb0035f
brew vendor-gems: commit updates. 2024-03-08 18:49:58 +00:00
BrewTestBot
486e66982e
brew vendor-gems: commit updates. 2024-03-08 18:49:01 +00:00
dependabot[bot]
25db57da38
build(deps-dev): bump rubocop-ast in /Library/Homebrew
Bumps [rubocop-ast](https://github.com/rubocop/rubocop-ast) from 1.31.1 to 1.31.2.
- [Release notes](https://github.com/rubocop/rubocop-ast/releases)
- [Changelog](https://github.com/rubocop/rubocop-ast/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-ast/compare/v1.31.1...v1.31.2)

---
updated-dependencies:
- dependency-name: rubocop-ast
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-08 18:48:26 +00:00
dependabot[bot]
cbc40727e0
build(deps): bump sorbet-static-and-runtime and sorbet-runtime
Bumps [sorbet-static-and-runtime](https://github.com/sorbet/sorbet) and [sorbet-runtime](https://github.com/sorbet/sorbet). These dependencies needed to be updated together.

Updates `sorbet-static-and-runtime` from 0.5.11284 to 0.5.11287
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

Updates `sorbet-runtime` from 0.5.11284 to 0.5.11287
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

---
updated-dependencies:
- dependency-name: sorbet-static-and-runtime
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: sorbet-runtime
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-08 18:47:27 +00:00
Mike McQuaid
9ac31827a0
Various brew update behaviour improvements
- Output a message every time auto-update is run rather than a 3 second
  timer. This makes it more obvious that Homebrew isn't just sitting
  doing nothing for 2.9 seconds.
- Output a message when running `brew update` so Homebrew doesn't just
  sit there silently doing nothing.
- Update all taps when `brew update` is run, not just those hosted on
  GitHub. This makes it more obvious that people don't need to explictly
  run `brew update` "just in case".
- As a result of this, remove `brew tap --force-auto-update` as it's no
  longer necessary.
2024-03-08 16:21:09 +00:00
Mike McQuaid
99e0b69262
Merge pull request #16852 from gliptak/xcode1
Emit more specific error text on outdated Xcode
2024-03-08 08:38:14 +00:00
Mike McQuaid
f1f92d28bf
Merge branch 'master' into lail/add-overwrite-flag-to-brew-upgrade 2024-03-08 08:27:04 +00:00
Mike McQuaid
8cce987f5c
Merge pull request #16853 from cho-m/cleaner-direct_url.json
cleaner: remove pip direct_url.json
2024-03-08 08:25:44 +00:00
Mike McQuaid
de73522b5a
os/Mac/diagnostic: include Xcode path and version. 2024-03-08 08:24:45 +00:00
Mike McQuaid
b70884a474
Merge pull request #16848 from Homebrew/rubocop_default_hash_syntax
rubocop: default hash syntax.
2024-03-08 07:55:33 +00:00
apainintheneck
e0cea903ec s/to_api_hash/to_internal_api_hash/ 2024-03-07 20:29:58 -08:00
apainintheneck
12d5a40262 dev-cmd/generate-cask-api: start generating cask internal JSON v3
This adds a new file to the output of `brew generate-cask-api` which
represents the new internal JSON v3 file. It involves removing
a bunch of unneeded hash keys while removing blank ones as well.

I've made some slight changes to the cask loader as well but more
might be necessary before this starts loading things correctly.
The full loader code will be added in a separate PR.
2024-03-07 20:29:58 -08:00
Michael Cho
4b5bcd39fd
cleaner: remove pip direct_url.json
Signed-off-by: Michael Cho <michael@michaelcho.dev>
2024-03-07 20:44:20 -05:00
Gábor Lipták
05acfaba33 Emit more specific error text on outdated Xcode
Signed-off-by: Gábor Lipták <gliptak@gmail.com>
2024-03-07 16:24:08 -05:00
Bob
3d24da1904 Add support for the --overwrite flag to brew upgrade to govern the keg-linking step
`FormulaInstaller` already supports this (https://github.com/Homebrew/brew/pull/12691) but I didn't wire it up via `brew upgrade` and the two can be used largely interchangeably
2024-03-07 13:13:28 -08:00
BrewTestBot
1879e45935
brew vendor-gems: commit updates. 2024-03-07 18:42:20 +00:00
dependabot[bot]
7a0d3d6606
build(deps-dev): bump rubocop-sorbet in /Library/Homebrew
Bumps [rubocop-sorbet](https://github.com/shopify/rubocop-sorbet) from 0.7.7 to 0.7.8.
- [Release notes](https://github.com/shopify/rubocop-sorbet/releases)
- [Commits](https://github.com/shopify/rubocop-sorbet/compare/v0.7.7...v0.7.8)

---
updated-dependencies:
- dependency-name: rubocop-sorbet
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-07 18:40:59 +00:00
Bo Anderson
6ceb38abf1
Merge pull request #16845 from cho-m/formula-bottle-doc
formula: update `bottle :unneeded` comment
2024-03-07 17:24:33 +00:00
Mike McQuaid
ea2892f8ee
brew.rb: handle missing args. 2024-03-07 16:20:20 +00:00
Michael Cho
6638243cd8
formula: update bottle :unneeded comment
Signed-off-by: Michael Cho <michael@michaelcho.dev>
2024-03-07 11:02:01 -05:00
Mike McQuaid
3840d7145c
rubocop: default hash syntax.
As-of 3.1: this mean that you omit the hash value if the name is the
same as the key.

We're allowing this already and it didn't make sense to land until the
bulk of the other RuboCop 3.1 changes did but, now we're ready, it is
more concise and a pattern that people will need to understand anyway.
2024-03-07 15:56:21 +00:00
Mike McQuaid
3802d113ae
Merge pull request #16846 from Homebrew/analytics_cleanup
utils/analytics: general cleanup.
2024-03-07 15:53:23 +00:00
Mike McQuaid
3654c1ad2c
Merge pull request #16844 from reitermarkus/tap-clear-all-caches
Actually clear all tap caches.
2024-03-07 15:36:25 +00:00
Mike McQuaid
9259c345cc
utils/analytics: general cleanup.
We have plans to add analytics for commands and `brew test-bot`

This requires a certain amount of refactoring which I've done here.

There was also a bunch of legacy `*_influx_?` usage from when we used
both InfluxDB and Google Analytics that made sense to clean up and
excessive indirection.
2024-03-07 15:19:04 +00:00
Michael Cho
2d9b352ad7
Merge pull request #16837 from cho-m/bump-replace-untyped-args
dev-cmd/bump: change `args` type to `CLI::Args`
2024-03-07 10:08:38 -05:00
Markus Reiter
47ff0b76c8
Actually clear all tap caches. 2024-03-07 15:43:16 +01:00
Markus Reiter
be9c0b8787
Simplify TapConfig. 2024-03-07 15:31:37 +01:00
Mike McQuaid
b97c29a466
Merge pull request #16842 from dduugg/fix-execs
Apply 'chmod -x' to executables without shebangs
2024-03-07 08:41:29 +00:00
Mike McQuaid
4a1746fbb6
Merge pull request #16839 from reitermarkus/remove-from-default-name-loader
Remove `FromDefaultNameLoader` to avoid warning twice.
2024-03-07 08:40:54 +00:00
Mike McQuaid
e01c3385ee
Merge pull request #16840 from reitermarkus/fix-cask-warning
Don't warn while checking for conflicting casks.
2024-03-07 08:39:46 +00:00