Compare commits

...

785 Commits
4.5.0 ... main

Author SHA1 Message Date
Ruoyu Zhong
23c491e5bc
Merge pull request #20247 from Homebrew/sorbet-files-update
sorbet: Update RBI files.
2025-07-13 14:51:13 +00:00
BrewTestBot
cc930ca089
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sorbet.yml) workflow.
2025-07-12 00:30:50 +00:00
Eric Knibbe
b631179579
Merge pull request #20246 from Homebrew/alias-symlink-names
aliases/aliases: fix naming of symlinks
2025-07-11 18:21:39 +00:00
Eric Knibbe
c1818fd099
aliases/aliases: fix naming of symlinks 2025-07-11 13:19:58 -04:00
Eric Knibbe
343748f601
Merge pull request #20242 from Homebrew/dependabot/pip/Library/Homebrew/formula-analytics/dependabot-e1daec460a
build(deps): bump the dependabot group across 1 directory with 3 updates
2025-07-11 16:51:52 +00:00
dependabot[bot]
4aee877f04
build(deps): bump the dependabot group across 1 directory with 3 updates
Bumps the dependabot group with 3 updates in the /Library/Homebrew/formula-analytics directory: [certifi](https://github.com/certifi/python-certifi), [influxdb3-python](https://github.com/InfluxCommunity/influxdb3-python) and [typing-extensions](https://github.com/python/typing_extensions).


Updates `certifi` from 2025.4.26 to 2025.6.15
- [Commits](https://github.com/certifi/python-certifi/compare/2025.04.26...2025.06.15)

Updates `influxdb3-python` from 0.13.0 to 0.14.0
- [Release notes](https://github.com/InfluxCommunity/influxdb3-python/releases)
- [Changelog](https://github.com/InfluxCommunity/influxdb3-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/InfluxCommunity/influxdb3-python/compare/v0.13.0...v0.14.0)

Updates `typing-extensions` from 4.13.2 to 4.14.1
- [Release notes](https://github.com/python/typing_extensions/releases)
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.13.2...4.14.1)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.6.15
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: influxdb3-python
  dependency-version: 0.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: typing-extensions
  dependency-version: 4.14.1
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: dependabot
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-11 16:12:52 +00:00
Mike McQuaid
a7d986c6c2
Merge pull request #20243 from Homebrew/dependabot/pip/Library/Homebrew/formula-analytics/setuptools-80.9.0
build(deps): bump setuptools from 80.8.0 to 80.9.0 in /Library/Homebrew/formula-analytics
2025-07-11 15:56:09 +00:00
dependabot[bot]
837bb29607
build(deps): bump setuptools in /Library/Homebrew/formula-analytics
Bumps [setuptools](https://github.com/pypa/setuptools) from 80.8.0 to 80.9.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.8.0...v80.9.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.9.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-11 15:36:54 +00:00
Mike McQuaid
11b3bd91c9
Merge pull request #20240 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-07-11 15:11:55 +00:00
BrewTestBot
6b5d6c5333
dependabot.yml: update to match main configuration 2025-07-11 14:54:40 +00:00
Mike McQuaid
8856a609d6
Merge pull request #20239 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-07-11 13:28:41 +00:00
Mike McQuaid
eec800149f
Merge pull request #20238 from Homebrew/fix_rubocop_fixture_style
`fixtures/rubocop@x.x.x.rbi`: fix style.
2025-07-11 13:17:54 +00:00
BrewTestBot
82914cafb1
dependabot.yml: update to match main configuration 2025-07-11 13:08:56 +00:00
Mike McQuaid
370ce002e9
Merge pull request #20237 from Homebrew/actionlint_skip_homebrew_brew
style: fix skipping actionlint checks on Homebrew/brew.
2025-07-11 13:06:52 +00:00
Issy Long
7f333ab6ec
Merge pull request #20235 from Homebrew/slash-not-plus-in-paths
rubocops/text: Prefer `lib/"string"` over `lib+"string"`
2025-07-11 12:56:54 +00:00
Mike McQuaid
607ffafd9f
fixtures/rubocop@x.x.x.rbi: fix style.
At least for me locally: `brew style` complains about this and
`brew style --fix` autocorrects it.
2025-07-11 13:54:51 +01:00
Mike McQuaid
26bb16e26d
style: fix skipping actionlint checks on Homebrew/brew.
If we're running `brew style` on Homebrew/brew: let's ensure that we
don't run the `actionlint` checks as they are handled by the dedicated
`actionlint.yml` workflow.
2025-07-11 13:51:59 +01:00
Mike McQuaid
36a4cb42ed
Merge pull request #20233 from Homebrew/zero_zero_zero_zero
Add ZeroZeroZeroZero cop
2025-07-11 12:44:23 +00:00
Issy Long
d4d1b4a22a
rubocops/text: Prefer lib/"string" over lib+"string"
- I found a few occurrences of this pattern from
  https://github.com/orgs/Homebrew/projects/5?pane=issue&itemId=97021840,
  that is an automated style request for:
  `core: use / instead of + operator in e.g. (lib+"lv").install "lv.hlp"`.
- Upon adding tests I realised that there's also the `prefix + "bin"`
  case that's already handled differently, so let's combine the handling
  given it's the same `+` that's wrong.
2025-07-11 13:41:58 +01:00
Mike McQuaid
3e0b0c1b32
Merge pull request #20232 from Homebrew/pathname_instance_variables
Improve some `Pathname` instance variable handling
2025-07-11 08:21:24 +00:00
Mike McQuaid
d57efd9ea2
Improve some Pathname instance variable handling
Will fix or at least partly address:
```
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/os/linux/elf.rb:225: warning: The class Pathname reached 8 shape variations, instance variables accesses will be slower and memory usage increased.
35
It is recommended to define instance variables in a consistent order, for instance by eagerly defining them all in the #initialize method.
```
2025-07-11 08:02:27 +00:00
Mike McQuaid
71bab462e1
Add ZeroZeroZeroZero cop
Add a new RuboCop to detect the use of 0.0.0.0 in formulae which
indicates binding to all network interfaces, internally or externally,
so is a bad default and potentially a security risk.

Co-authored-by: Issy Long <me@issylong.com>
2025-07-11 08:24:19 +01:00
Carlo Cabrera
5692ea6c17
Merge pull request #20236 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-07-11 06:55:42 +00:00
BrewTestBot
8efb804e4e
actionlint.yml: update to match main configuration 2025-07-11 06:36:02 +00:00
Patrick Linnane
a65b9d0128
Merge pull request #20234 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-07-10 17:25:05 +00:00
BrewTestBot
e4893037ae
dependabot.yml: update to match main configuration 2025-07-10 17:09:22 +00:00
Mike McQuaid
a2bf23ef70
Merge pull request #20224 from Homebrew/cask_dumper_old_tokens
Support Cask renames when installing/dumping
2025-07-10 13:54:26 +00:00
Carlo Cabrera
0b99d57621
Merge pull request #20226 from Homebrew/formula-loading-stdout
formulary: prevent formulae from printing to stdout while being loaded
2025-07-10 12:43:42 +00:00
Carlo Cabrera
69ce5edd14
formulary: improve style
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2025-07-10 20:27:52 +08:00
Mike McQuaid
b53f3b570c
Merge pull request #20228 from Paulchen5/use-github-secrets-in-workflow
Replace `github.token` by `secrets.GITHUB_TOKEN`
2025-07-10 08:32:40 +00:00
Mike McQuaid
5bc5d53a23
Merge pull request #20229 from Homebrew/attestation_opt_in
attestation: require explicit opt-in.
2025-07-10 08:24:48 +00:00
Mike McQuaid
17762fa77a
attestation: require explicit opt-in.
Work on this has stalled a bit and it slows things down so let's require
an explicit opt-in to use it.

While we're here, remove the silent/implicit opt-out for CI, too.
2025-07-10 09:10:08 +01:00
Mike McQuaid
e8bfa23877
Support Cask renames when installing/dumping
This adds support for Cask old tokens used for renames of Casks.

We'll now correctly check these at installation time to avoid repeatedly
installing renamed Casks and dump them in the Brewfile. We also use this
logic to avoid cleaning up renamed Casks.
2025-07-10 08:05:36 +00:00
Paulchen
b7b369270e
Replace github.token by secrets.GITHUB_TOKEN 2025-07-10 17:01:29 +09:00
Carlo Cabrera
d46d315cc1
Merge pull request #20227 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-07-09 22:07:13 +00:00
BrewTestBot
455a461406
actionlint.yml: update to match main configuration 2025-07-09 21:53:17 +00:00
Carlo Cabrera
6141c6a181
formulary: prevent formulae from printing to stdout while being loaded
Formulae can execute arbitrary Ruby code when being loaded. In
particular, they can print to stdout with methods like `puts`. This can
break the parsing of output of commands like `brew info --json=v2`.

Let's fix that by capturing the output to stdout, and then printing
those messages to stderr instead (using `opoo` to try to discourage
formula authors from doing this).
2025-07-10 03:58:39 +08:00
Issy Long
ab3955209e
Merge pull request #20225 from Homebrew/rename-bundle-tests
Rename the `brew_{dumper,installer}_spec.rb` files
2025-07-09 17:42:23 +00:00
Issy Long
50c3181cdb
Rename the brew_{dumper,installer}_spec.rb files
- The classes were renamed in 990c1efc16aad71254ae89e0b7983eee97696c72,
  but I forgot to rename the test filenames.
2025-07-09 17:47:08 +01:00
Eric Knibbe
700d67a85e
Merge pull request #20220 from Homebrew/download_strategy-wanted-headers
download_strategy: only require content-disposition header
2025-07-07 17:52:52 +00:00
Eric Knibbe
0f2131484d
download_strategy: only require content-disposition header 2025-07-07 13:16:33 -04:00
Mike McQuaid
5ec756e0ca
Merge pull request #20193 from Homebrew/skinny-rubocop-rbi
Keep only the parts of `rubocop.rbi` that we actually use
2025-07-07 16:59:45 +00:00
Bo Anderson
d88a0e46fc
Merge pull request #20221 from Homebrew/shfmt-fix
style: run shfmt on real brew
2025-07-07 16:50:11 +00:00
Bo Anderson
2dfb8c0b76
style: run shfmt on real brew 2025-07-07 17:28:31 +01:00
Patrick Linnane
114d66082d
Merge pull request #20215 from Homebrew/sorbet-files-update
sorbet: Update RBI files.
2025-07-05 05:49:20 +00:00
BrewTestBot
d010adb903
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sorbet.yml) workflow.
2025-07-05 00:29:43 +00:00
Douglas Eichelberger
43b72d3633
Merge pull request #20213 from Homebrew/dug-20205
Exit non-zero when pinning uninstalled formula
2025-07-04 21:56:14 +00:00
Issy Long
1286a3676c
Merge pull request #20214 from Homebrew/the-old-brews-flag-needs-to-remain-for-backwards-compatibility
Retain the old `brew bundle --brews` flag for compatibility
2025-07-04 21:52:49 +00:00
Issy Long
ce8bf906c1
Retain the old brew bundle --brews flag for compatibility
https://github.com/Homebrew/brew/pull/20209#discussion_r2186099917
2025-07-04 22:02:59 +01:00
Douglas Eichelberger
e78cc286e0
Keep exiting zero on already pinned formulae 2025-07-04 13:55:12 -07:00
Douglas Eichelberger
f4bcda325a
Exit non-zero when pinning uninstalled formula 2025-07-04 13:28:54 -07:00
Issy Long
495b5bedde
Merge pull request #20209 from Homebrew/bundle-rename-brews-to-formulae
bundle: Rename "brews" to "formulae" for consistency
2025-07-04 20:21:38 +00:00
Issy Long
990c1efc16
bundle: Rename "brews" to "formulae" for consistency
- Homebrew Bundle referred to formulae as "brews". But it referred to
  casks as "casks" and taps as "taps".
- Let's use the same terminology everywhere.
- (I know that `brew "hello"` is the formula syntax in the Brewfile, so
  I'm not changing that (though would be up for it, in a backwards
  compatible manner), just making the code more consistent.)
2025-07-04 21:08:37 +01:00
Eric Knibbe
b57557dc3d
Merge pull request #20210 from Homebrew/formula-download-strategies
Formula-Cookbook: improve download strategy info
2025-07-04 19:25:40 +00:00
Eric Knibbe
bb372b2665
Formula-Cookbook: improve download strategy info 2025-07-04 15:12:32 -04:00
Patrick Linnane
727804bb08
Merge pull request #20206 from osalbahr/docs-update-dnf-commands
docs/Homebrew-on-Linux: update dnf5 syntax, centos/rhel section
2025-07-04 18:24:41 +00:00
Patrick Linnane
5c8fe3a339
Merge pull request #20212 from Homebrew/sponsors-maintainers-man-completions
Update manpage and completions.
2025-07-04 18:15:15 +00:00
BrewTestBot
37f1e48538
Update manpage and completions.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-07-04 17:42:58 +00:00
Eric Knibbe
be6c62b1d9
Merge pull request #20211 from Homebrew/fix-brew-info
cmd/info: fix `brew info <formula>`
2025-07-04 17:23:47 +00:00
Eric Knibbe
a7471e449e
cmd/info: fix brew info <formula> 2025-07-04 10:33:11 -04:00
Issy Long
a36f8af593
Merge pull request #20208 from Homebrew/dependabot/github_actions/github-actions-384b59e5c3
build(deps): bump github/codeql-action from 3.29.0 to 3.29.2 in the github-actions group
2025-07-04 10:13:16 +00:00
dependabot[bot]
998470f4a5
build(deps): bump github/codeql-action in the github-actions group
Bumps the github-actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.29.0 to 3.29.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3.29.0...181d5eefc20863364f96762470ba6f862bdef56b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-04 08:59:13 +00:00
Osama Albahrani
4f677e72d4 docs/Homebrew-on-Linux: update dnf5 syntax, centos/rhel section
Tested on Fedora 42 and CentOS Stream/RHEL 10 (latest for all).

Note: Fedora 42 uses dnf5 while CentOS Stream/RHEL 10 use dnf4

See:
- https://github.com/Homebrew/install/pull/894
- 0fd28f83c8/install.sh (L1133)
2025-07-04 06:55:18 +03:00
Eric Knibbe
94606f343a
Merge pull request #20200 from Homebrew/consider-content-type
download_strategy: preserve cache upon text response
2025-07-04 02:18:45 +00:00
Eric Knibbe
eff4523074
download_strategy: preserve cache upon text response 2025-07-03 22:05:49 -04:00
Eric Knibbe
0b7c57af3b
Merge pull request #20204 from Homebrew/eval-all-check-env
cmd/dev-cmd: fetch `HOMEBREW_EVAL_ALL` for `--eval-all`
2025-07-04 02:05:22 +00:00
Issy Long
836d85277f
Keep only the parts of rubocop.rbi that we actually use
- This file was _massive_ - over 60k lines and we had to bump the file
  size limit for pushes to the repo!
- This was because by default Tapioca, when it encounters a
  `require "rubocop"` during RBI generation, loads all of the cops ever
  because they're all classes inside `RuboCop::Cop`.
- There wasn't an easy way to control this at Tapioca generation time
  (we tried), so now we parse the generated RBI file and delete classes
  and method definitions that we don't use.
- I regenerated the RBIs (`brew tc --update rubocop`) and added new
  things to the allowlist until Sorbet came back green.
- Now the file is ~7k lines and 240K - much better!
2025-07-04 00:27:12 +01:00
Eric Knibbe
f5c5d26173
cmd/dev-cmd: fetch HOMEBREW_EVAL_ALL for --eval-all 2025-07-03 12:59:12 -04:00
Carlo Cabrera
57024a9f2d
Merge pull request #20195 from tyuwags/ask-option-refactoring
Ask option refactoring
2025-07-03 12:28:46 +00:00
Issy Long
4b85b24531
Merge pull request #20201 from Homebrew/fix-dry-run-install
Fix "undefined method 'name' for an instance of FormulaInstaller"
2025-07-03 10:47:12 +00:00
Issy Long
c7af63488d
Be more explicit that we want the formula name 2025-07-03 11:29:50 +01:00
Thibaut Hérault
ea240e5aad
Update Library/Homebrew/reinstall.rb
Co-authored-by: Carlo Cabrera <github@carlo.cab>
2025-07-02 15:43:24 -04:00
Bevan Kay
23742f3500
Merge pull request #20203 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-07-02 13:30:51 +00:00
BrewTestBot
09cec91b28
actionlint.yml: update to match main configuration 2025-07-02 08:10:35 +00:00
Eric Knibbe
ec9c0d65fd
Merge pull request #20202 from Homebrew/spdx-update
spdx: update license data.
2025-07-02 03:30:03 +00:00
BrewTestBot
2e963b2e06
spdx: update license data.
Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/spdx.yml).
2025-07-02 00:17:54 +00:00
Issy Long
5310c5e730
Fix "undefined method 'name' for an instance of FormulaInstaller"
- Because `name` is not a method on `FormulaInstaller`, instead
  `formula` shows the name.
- Fixes issue 20199.

Before:

```
$ brew install -n hello
Error: undefined method 'name' for an instance of FormulaInstaller
Warning: Removed Sorbet lines from backtrace!
Rerun with `--verbose` to see the original backtrace
/opt/homebrew/Library/Homebrew/install.rb:330:in 'Array#map'
/opt/homebrew/Library/Homebrew/install.rb:330:in 'Homebrew::Install.install_formulae'
```

After:

```
$ brew install -n hello
==> Would install 1 formula:
hello
```
2025-07-01 22:25:22 +01:00
Eric Knibbe
8520539312
Merge pull request #20198 from Homebrew/determine-runner-arch
github_runner_matrix: fix skipped runner creation
2025-07-01 19:20:50 +00:00
Eric Knibbe
f92e961ff1
github_runner_matrix: fix skipped runner creation 2025-07-01 15:07:24 -04:00
Thibaut Hérault
a6aad3d12f
Update Library/Homebrew/upgrade.rb
Co-authored-by: Carlo Cabrera <github@carlo.cab>
2025-07-01 09:59:54 -04:00
thibhero
006d3779f3 returning early if upgradeable is blank
resolves #20197
2025-06-30 10:58:33 -04:00
thibhero
e3cc36a8b9 guard if keg or linked is nil 2025-06-30 10:57:41 -04:00
thibhero
c7f7ab5631 duplicate in ask_formulae 2025-06-29 23:29:18 -04:00
thibhero
c5036f3bba removing debugging symbols 2025-06-29 23:24:04 -04:00
thibhero
dfab4bbab2 removing formula previously updated 2025-06-29 23:18:38 -04:00
Issy Long
019a799fae
Merge pull request #20128 from Homebrew/some-bundle-files-werent-typed-at-all
Make the remaining `bundle` files `typed: true`
2025-06-29 23:10:59 +00:00
Douglas Eichelberger
bcab2ae500
Merge pull request #20192 from Homebrew/dug-refactor-exec
Refactor exec.rb type fixes
2025-06-29 11:59:27 -07:00
Douglas Eichelberger
fb01c0fa96
Update another overly narrow return type 2025-06-29 11:30:06 -07:00
Douglas Eichelberger
004c0a2a6c
Refactor exec.rb type fixes 2025-06-29 09:02:24 -07:00
Branch Vincent
52d66f206a
Merge pull request #20191 from branchvincent/maturin
extend/ENV/super: set `MATURIN_NO_INSTALL_RUST`
2025-06-28 20:09:44 +00:00
Branch Vincent
ba178a8f10
extend/ENV/super: set MATURIN_NO_INSTALL_RUST 2025-06-27 21:49:56 -07:00
Eric Knibbe
fe4f472c8d
Merge pull request #20187 from Homebrew/github-release-notes-link
dev-cmd/bump-formula-pr: release notes as proper html link
2025-06-28 00:14:45 +00:00
Bo Anderson
01c8e42ea8
Merge pull request #20190 from Homebrew/local-main-fix
cmd/update: ensure local branch moves to main
2025-06-27 23:52:58 +00:00
Issy Long
c3ec61b7cd
Merge pull request #20182 from Homebrew/some-bundle-files-werent-typed-at-all-but-now-some-are
Reapply "Make some of the `bundle` commands Sorbet `typed: true`"
2025-06-27 21:37:41 +00:00
Bo Anderson
98b7bc8d11
cmd/update: ensure local branch moves to main 2025-06-27 22:05:17 +01:00
Issy Long
a2e39c4814
Make Bundle::BrewDumper more Homebrew-y
- https://github.com/Homebrew/brew/pull/20182#discussion_r2170422499
2025-06-27 18:15:37 +01:00
Bo Anderson
4dabf8da16
Merge pull request #20186 from Homebrew/origin-head-fix
cmd/update: ensure we update remote main ref
2025-06-27 16:57:41 +00:00
Štefan Baebler
5627a90652
dev-cmd/bump-formula-pr: release notes as proper html link
The release notes link is not rendered as a proper hyperlink, this fixes it.

Few examples of PRs with unclickable links:
* https://github.com/Homebrew/homebrew-core/pull/228256
* https://github.com/Homebrew/homebrew-core/pull/228263
* https://github.com/Homebrew/homebrew-core/pull/228267
2025-06-27 18:52:43 +02:00
Bo Anderson
7f3f3c2d55
cmd/update: ensure we update remote main ref 2025-06-27 17:45:04 +01:00
Mike McQuaid
a83a71ab5f
Merge pull request #20185 from Homebrew/tier_doctor_issues
Provide more leeway to file Tier 2/3 issues.
2025-06-27 16:23:36 +00:00
Mike McQuaid
7019df7481
Provide more leeway to file Tier 2/3 issues.
Let's still continue to tell people to not file some issues but allow
them to file others.

While we're here, let's me a bit more chill with the language here.
2025-06-27 15:27:26 +01:00
Mike McQuaid
c9d3df2e54
Merge pull request #20176 from Homebrew/migrate_core_main
cmd/update: improve homebrew-core `main` migration.
2025-06-27 08:28:04 +00:00
Mike McQuaid
c8585134b4
Merge pull request #20171 from Homebrew/core_main
docs: homebrew-core's default branch is now `main`
2025-06-27 08:28:02 +00:00
Mike McQuaid
53bb328cbc
Merge pull request #20183 from tyuwags/correcting-Refine-ask‐option-dependency
Correcting refine ask option dependency
2025-06-27 08:05:34 +00:00
thibhero
e731b572f3 correcting rescue to use installer and not formula 2025-06-27 03:50:26 -04:00
Mike McQuaid
fbab2caec3
Merge pull request #20184 from Homebrew/fix_docs_ci
docs: fix HTML Proofer in CI
2025-06-27 07:34:16 +00:00
Mike McQuaid
e3e8ccef0a
docs: fix HTML Proofer in CI
- Add caching to make this build faster and less flaky.
- Skip the currently flaky URL.
- Cache external links for longer.
2025-06-27 08:09:24 +01:00
thibhero
f9dab1561a removing debugging symbol 2025-06-26 19:13:02 -04:00
thibhero
9e131d0794 correcting error of installation dependency
resolves #20181
2025-06-26 19:12:39 -04:00
Issy Long
5fed8f4210
Make the remaining Bundle file Sorbet typed: true 2025-06-26 23:21:54 +01:00
Issy Long
0d40f48e8d
Reapply "Make some of the bundle commands Sorbet typed: true"
- This reverts commit 68dbf12220f9a52ddf5ca5eb3aa1b356aa42da3a that was
  a revert of commit 68596ec720a50f44ae9c30c5806aa7f2d4bcc96f because I
  put the RBI file in the wrong place and Tapioca got rid of it, causing
  this week's release to be blocked.
2025-06-26 23:15:23 +01:00
Mike McQuaid
415c0de6b2
Merge pull request #20178 from tyuwags/upgrade-pin
upgrade pin nil value
2025-06-26 21:53:31 +00:00
thibhero
06cb0cd197 returning previously if there is no formulae to upgrade
resolves #20177
2025-06-26 13:06:57 -04:00
Mike McQuaid
4fd7c6fa8d
Merge pull request #20174 from Homebrew/remove-migrated-symlinks
cask/installer: remove migration symlinks on uninstall
2025-06-26 14:52:14 +00:00
Mike McQuaid
66c11afa7c
Merge pull request #20175 from Homebrew/migrate_brew_cask_main
cmd/update: improve Homebrew/brew and homebrew-cask `main` migration.
2025-06-26 14:49:34 +00:00
Eric Knibbe
29122c0008
cask/installer: remove migration symlinks on uninstall 2025-06-26 10:37:52 -04:00
Mike McQuaid
c86a5a1b74
Merge pull request #20156 from abitrolly/url-from-latest-release
create: detect URL from latest release if it isn't archive
2025-06-26 13:02:56 +00:00
Anatoli Babenia
3e36e98db3 create: detect URL from latest release if it isn't archive
Detects source archive for GitHub URL without version. Both releases
and tags share the same URL pattern for source archive

  https://github.com/Homebrew/brew/releases
  https://github.com/Homebrew/brew/tags
2025-06-26 15:07:51 +03:00
Mike McQuaid
aa596d3e6b
cmd/update: improve homebrew-core main migration.
Let's avoid people sticking on the master branch unnecessarily.
2025-06-26 12:13:48 +01:00
Mike McQuaid
f649587d51
cmd/update: improve Homebrew/brew main migration.
Let's avoid people sticking on the `master` branch unnecessarily.
2025-06-26 12:11:11 +01:00
Mike McQuaid
b87d2887fe
Merge pull request #20033 from tyuwags/master
Refine ask‐option dependency resolution and strengthen tests
2025-06-26 10:52:46 +00:00
Mike McQuaid
dfe8fde704
Merge pull request #20172 from Homebrew/cask_main
docs: homebrew-cask's default branch is now `main`
2025-06-26 10:37:05 +00:00
Mike McQuaid
db45e81d88
Merge pull request #20173 from Homebrew/named_args_old_tokens_warning
cli/named_args: don't warn about old tokens overlapping.
2025-06-25 16:38:07 +00:00
Mike McQuaid
c36389165c
cli/named_args: don't warn about old tokens overlapping.
This avoids e.g.

```
Warning: Treating angband as a formula.
For the cask, use homebrew/cask/angband-app or specify the `--cask` flag.
To silence this message, use the `--formula` flag.
```

when running `brew install angband`.
2025-06-25 17:24:35 +01:00
Mike McQuaid
f1e458a36a
Merge pull request #20117 from botantony/no_autobump
docs: add autobump related documentation
2025-06-25 15:27:51 +00:00
Mike McQuaid
505428e03b
docs/Formula-Cookbook: use autobumped terminology. 2025-06-25 15:42:24 +01:00
Mike McQuaid
9fa50e5e12
Merge pull request #20168 from tyuwags/json-update-migrator
updating json with `cask/migrator`
2025-06-25 14:41:41 +00:00
botantony
a85a9b84bb
rubocop.yml: add autobump_constants.rb
Signed-off-by: botantony <antonsm21@gmail.com>
2025-06-25 15:36:51 +02:00
botantony
0fb87af72c
autobump_constants: split NO_AUTOBUMP_REASONS_LIST
Signed-off-by: botantony <antonsm21@gmail.com>
2025-06-25 15:31:18 +02:00
Anton Melnikov
75146e032c
docs: suggestions from code review
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2025-06-25 15:30:06 +02:00
Mike McQuaid
b63ad37eeb
cask/migrator: tweak syntax. 2025-06-25 08:54:05 +01:00
Mike McQuaid
ec61b49ee9
docs: homebrew-cask's default branch is now main
Adjust documentation accordingly.
2025-06-25 08:50:36 +01:00
Mike McQuaid
e11952a2e0
docs: homebrew-core's default branch is now main
Adjust documentation accordingly.
2025-06-25 08:49:58 +01:00
Mike McQuaid
ca510da620
Merge pull request #20169 from boblail/lail/invalidate-download-cache-logging
download_strategy: Add logging when a cached download is being ignored
2025-06-25 07:44:04 +00:00
Bob Lail
048f58123f
download_strategy: Add logging when a cached download is being ignored 2025-06-25 08:32:02 +01:00
Rylan Polster
36ae1ee429
Merge pull request #20170 from Homebrew/spdx-update
spdx: update license data.
2025-06-25 00:56:15 +00:00
BrewTestBot
71d788e156
spdx: update license data.
Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/spdx.yml).
2025-06-25 00:18:16 +00:00
Patrick Linnane
2c89b70f28
Merge pull request #20159 from Homebrew/paths_d_homebrew
package/scripts/postinstall: add Homebrew to PATH.
2025-06-24 20:27:16 +00:00
Patrick Linnane
f32f391fc4
Merge pull request #20165 from Homebrew/more_tab_types
tab, cask/tab: add more Sorbet types and signatures.
2025-06-24 20:27:11 +00:00
Patrick Linnane
f4491e0c8f
Merge pull request #20167 from Homebrew/update_report_display_descriptions
cmd/update-report: display descriptions for new formulae and casks.
2025-06-24 20:26:47 +00:00
thibhero
f34f1c4a33 updating json to add old_token when a migration is made 2025-06-24 12:03:41 -04:00
Mike McQuaid
28753ef002
cmd/update-report: display descriptions for new formulae and casks.
This parses Homebrew's API JSON data to display descriptions for new
formulae and casks if available.

While we're here also add tests for ReporterHub.
2025-06-24 16:59:24 +01:00
Mike McQuaid
3495ea576c
Merge pull request #20166 from Homebrew/sync-default-branches-force
workflows/sync-default-branches: force push instead of force-with-lease.
2025-06-24 15:29:14 +00:00
Mike McQuaid
b391d6f366
Merge branch 'main' into sync-default-branches-force 2025-06-24 15:58:51 +01:00
Mike McQuaid
f89387ac39
workflows/sync-default-branches: force push instead of force-with-lease.
Force-with-lease doesn't work as expected with a shallow clone.
2025-06-24 15:58:28 +01:00
Mike McQuaid
05c7b65f54
tab, cask/tab: add more Sorbet types and signatures.
I bailed before going all the way to `typed: strict` but this should at
least improve things and fix:

`Library/Homebrew/tab.rb:111: warning: The class Tab reached 8 shape variations, instance variables accesses will be slower and memory usage increased.`
2025-06-24 12:06:55 +01:00
Mike McQuaid
1ecd060b38
Merge pull request #20164 from Homebrew/more_master_to_main
Switch to using `main` as the default branch
2025-06-24 10:59:42 +00:00
Mike McQuaid
f83c5ee2ed
workflows/sync-default-branches: speed up with partial clone.
Let's avoid doing a full clone and instead use a partial clone and a
`git ls-remote` to get the target SHA and just push that without needing
 to fully fetch it.
2025-06-24 11:46:49 +01:00
Mike McQuaid
d661cffc1f
Switch to using main as the default branch
Homebrew/brew has moved to a `main` default branch so we can more move
references from `master` to `main`.
2025-06-24 11:14:57 +01:00
Mike McQuaid
e42084dc6f
Merge pull request #20163 from Homebrew/brew-doctor-xattr-linux-check
Remove redundant `xattr` doctor check on systems without quarantine support
2025-06-24 09:22:19 +00:00
Rylan Polster
426da94cc9
Remove redundant xattr doctor check on systems without quarantine support 2025-06-24 03:07:04 +00:00
Mike McQuaid
27b9bf2377
Merge pull request #20161 from Homebrew/sponsors-maintainers-man-completions
Update manpage and completions.
2025-06-23 16:06:13 +00:00
Mike McQuaid
2c16fe9184
Merge pull request #20160 from Homebrew/mcp_server_eof
mcp_server: fix EOF handling.
2025-06-23 16:04:29 +00:00
Mike McQuaid
818662352c
mcp_server: fix EOF handling.
We need to handle when `stdin` is closed but there's no interrupt
signal.

Without this, the server will be stuck an in infinite busy loop.
2025-06-23 16:50:39 +01:00
BrewTestBot
af14bcb69b
Update manpage and completions.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-06-23 15:45:42 +00:00
Mike McQuaid
4759ca9430
Merge pull request #20134 from Homebrew/homebrew_core_cask_name_audit
audit: ensure that official formula and cask names don't conflict.
2025-06-23 15:33:00 +00:00
Mike McQuaid
55f65ec375
audit: ensure that official formula and cask names don't conflict.
Co-authored-by: Eric Knibbe <enk3@outlook.com>
2025-06-23 16:08:13 +01:00
Mike McQuaid
a9faa2cd8e
package/scripts/postinstall: add Homebrew to PATH.
This is automatic for `/usr/local/bin/brew` but let's do it manually
for `/opt/homebrew/bin/brew` too.
2025-06-23 15:16:49 +01:00
botantony
0dc48348af
docs: add autobump-related documentation
Signed-off-by: botantony <antonsm21@gmail.com>
2025-06-23 15:06:37 +02:00
Mike McQuaid
c19f08b3e8
Merge pull request #20158 from Homebrew/revert-20145-some-bundle-files-werent-typed-at-all-but-now-some-are
Revert "Make some of the `bundle` commands Sorbet `typed: true`"
2025-06-23 13:04:48 +00:00
Carlo Cabrera
d590e398fc
Merge pull request #20157 from Homebrew/shebang-regex
language/*: fix `*_SHEBANG_REGEX` anchors
2025-06-23 13:02:21 +00:00
Mike McQuaid
68dbf12220
Revert "Make some of the bundle commands Sorbet typed: true" 2025-06-23 13:52:35 +01:00
Carlo Cabrera
6a7416c296
language/*: fix *_SHEBANG_REGEX anchors
We should use `\A` to pick up shebangs at the start of files instead of
just anywhere in a given script.

See Homebrew/homebrew-core#227654 for an example where this can cause
problems.
2025-06-23 20:32:55 +08:00
Mike McQuaid
cfede01ea9
Merge pull request #20155 from Homebrew/core-caveats
rubocops/caveats: only apply dynamic logic check to core.
2025-06-23 08:17:08 +00:00
Mike McQuaid
984273be76
Merge pull request #20153 from Homebrew/brew-doctor-linux-cask-errors
Improve `brew doctor` warnings about `xattr` and cask quarantine
2025-06-23 08:07:30 +00:00
Mike McQuaid
afa5d50b36
rubocops/caveats: only apply dynamic logic check to core.
This doesn't really matter for non-API taps.
2025-06-23 08:58:34 +01:00
Mike McQuaid
a6b1d42488
Merge pull request #20154 from abitrolly/brew-audit-v-version
create: strip 'v' prefix from version
2025-06-23 07:30:03 +00:00
Eric Knibbe
2703f12875
Merge pull request #20150 from Homebrew/download_strategy-fossil
download_strategy: fossil now outputs `hash:`
2025-06-23 03:03:57 +00:00
Rylan Polster
2acd4e4293
Improve messaging with missing xattr 2025-06-22 18:59:52 +00:00
Eric Knibbe
8a4cac0238
download_strategy: fix cvs checkouts 2025-06-22 14:38:19 -04:00
Eric Knibbe
7e79232512
download_strategy: fossil now outputs hash: 2025-06-22 14:38:19 -04:00
Rylan Polster
12e5e24ce3
Improve brew doctor warnings about xattr and cask quarantine 2025-06-22 14:24:22 -04:00
Anatoli Babenia
84505c714d Fix brew style "Prefer double-quoted strings" 2025-06-22 18:05:47 +03:00
Anatoli Babenia
eca98d036c create: strip 'v' prefix from version
To fix subsequent `brew audit` error:

  * line 8, col 3: Version v0.38.1 should not have a leading 'v'
2025-06-22 17:41:00 +03:00
Rylan Polster
f238d3b494
Merge pull request #20151 from Homebrew/fix-doctor-linux
Fix `brew doctor` cask handling on Linux
2025-06-22 10:10:28 +00:00
Rylan Polster
44dcb58f9e
Merge pull request #20152 from Homebrew/extend-os-class-methods
Fix handling of class methods in `extend/os`
2025-06-22 02:20:18 +00:00
Rylan Polster
431d8f1ff7
Consistently use ClassMethods sub-module for prepending class methods 2025-06-21 21:40:57 -04:00
Rylan Polster
267afac198
Remove more monkey-patching in extend/os 2025-06-21 21:34:20 -04:00
Rylan Polster
508c8b606c
Fix DevelopmentTools::ld64_version on macOS 2025-06-21 21:13:38 -04:00
Rylan Polster
2a7fbd00a9
Fix Cask::Quarantine class methods on Linux 2025-06-21 21:07:08 -04:00
Rylan Polster
ff79015373
Fix Hardware::CPU::features on macOS 2025-06-21 21:01:44 -04:00
Rylan Polster
e1873d30d4
Run deprecated cask tap check on all systems 2025-06-21 13:59:58 -04:00
Rylan Polster
031160936f
Split out os-specific cask software version checks 2025-06-21 13:59:57 -04:00
thibhero
2d39c7feb5 making flow easier to understand 2025-06-20 16:41:32 -04:00
thibhero
f674a3ac03 comment 2025-06-20 12:59:15 -04:00
thibhero
a16129fc59 new line to make it easier to understand 2025-06-20 12:36:22 -04:00
thibhero
6d0a77fc79 fixing method refactoring 2025-06-20 12:32:46 -04:00
thibhero
7d7d04bdf5 Merge remote-tracking branch 'tyuwags/master' 2025-06-20 12:29:08 -04:00
thibhero
2fb6105f26 renaming variable 2025-06-20 12:29:02 -04:00
thibhero
90b697995f renaming parameter, method and struct to make it more understandable 2025-06-20 12:28:38 -04:00
thibhero
0db36b57c8 fetching tab and renaming variables 2025-06-20 12:25:55 -04:00
thibhero
052c0ae2cd adding parameter to fetch quietly if wanted 2025-06-20 12:25:12 -04:00
Thibaut Hérault
0800faf093
Update Library/Homebrew/upgrade.rb
Co-authored-by: Bo Anderson <mail@boanderson.me>
2025-06-20 11:10:36 -04:00
Thibaut Hérault
bcc7f0f796
Update Library/Homebrew/install.rb
Co-authored-by: Bo Anderson <mail@boanderson.me>
2025-06-20 11:10:18 -04:00
Mike McQuaid
dd04fb5ab6
Merge pull request #20146 from Homebrew/dependabot/github_actions/github-actions-348b342bd6
build(deps): bump docker/setup-buildx-action from 3.10.0 to 3.11.1 in the github-actions group
2025-06-20 12:33:42 +00:00
Mike McQuaid
d0a144520d
Merge pull request #20145 from Homebrew/some-bundle-files-werent-typed-at-all-but-now-some-are
Make some of the `bundle` commands Sorbet `typed: true`
2025-06-20 10:58:07 +00:00
dependabot[bot]
d961c4772a
build(deps): bump docker/setup-buildx-action in the github-actions group
Bumps the github-actions group with 1 update: [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action).


Updates `docker/setup-buildx-action` from 3.10.0 to 3.11.1
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](b5ca514318...e468171a9d)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: 3.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-20 08:44:06 +00:00
Issy Long
68596ec720
Make some of the bundle commands Sorbet typed: true
- The last remaining one is `exec` but that's a bit more involved
  (https://github.com/Homebrew/brew/pull/20128#discussion_r2156781591).
2025-06-20 10:11:35 +02:00
Mike McQuaid
9d357b57d1
Merge pull request #20135 from Homebrew/forbid_dynamic_caveats
rubocops/caveats: check for dynamic caveats.
2025-06-20 07:57:06 +00:00
Mike McQuaid
e6d4db8d6f
Merge pull request #20025 from abitrolly/new-detect-latest-release
formula_creator: detect GitHub version from latest release
2025-06-20 07:40:44 +00:00
Anatoli Babenia
dce285458e Add test for name override with GitHub URLs 2025-06-19 16:28:48 +03:00
Anatoli Babenia
cf2e20d586 Fix version reporting in odebug messages 2025-06-19 16:18:41 +03:00
Mike McQuaid
f77c9861de
rubocops/caveats: check for dynamic caveats.
This will avoid issues with the JSON API.
2025-06-19 10:13:32 +01:00
Mike McQuaid
2cd7a32660
formula_creator: improve code/test style. 2025-06-19 09:02:46 +01:00
Anatoli Babenia
3964186bec
formula_creator: fetch missing version from latest GitHub release 2025-06-19 09:02:36 +01:00
Mike McQuaid
9f5286f3d7
Merge pull request #20143 from Homebrew/dependabot/pip/Library/Homebrew/formula-analytics/urllib3-2.5.0
build(deps): bump urllib3 from 2.4.0 to 2.5.0 in /Library/Homebrew/formula-analytics
2025-06-19 07:40:29 +00:00
dependabot[bot]
6bfcd62c7c
build(deps): bump urllib3 in /Library/Homebrew/formula-analytics
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.4.0...2.5.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.5.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-19 05:26:06 +00:00
Rylan Polster
4ce9faf294
Merge pull request #20142 from Homebrew/sorbet-files-update
sorbet: Update RBI files.
2025-06-19 02:10:16 +00:00
BrewTestBot
4c18ff443c
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sorbet.yml) workflow.
2025-06-19 00:30:14 +00:00
thibhero
19901b5332 refactoring style to resolve the last discussions 2025-06-18 16:05:19 -04:00
Mike McQuaid
99a8e3a288
Merge pull request #20141 from botantony/enable_no_autobump
tap: rely on new autobump list
2025-06-18 14:34:08 +00:00
Mike McQuaid
ccb3543c6c
Merge pull request #20126 from botantony/no_autobump_rubocops
rubocops: add `no_autobump!` rubocop
2025-06-18 14:33:37 +00:00
Mike McQuaid
62cff0e852
Merge pull request #20136 from abitrolly/newnew-detect-latest-release
formula_creator: test GitHub repo call for archive|releases URLs
2025-06-18 14:20:22 +00:00
botantony
aecdcd4840
rubocops: add no_autobump! rubocop
Signed-off-by: botantony <antonsm21@gmail.com>
2025-06-18 16:16:12 +02:00
botantony
d0345513e2
tap: rely on new autobump list
Signed-off-by: botantony <antonsm21@gmail.com>
2025-06-18 16:16:08 +02:00
Anatoli Babenia
f738fce3d9
formula_creator: test GitHub repo call for archive|releases URLs 2025-06-18 15:07:44 +01:00
Mike McQuaid
76470c0d8a
Merge pull request #20137 from Homebrew/cached-location-validation
download_strategy: fix caching of `:latest` downloads
2025-06-18 07:33:29 +00:00
Mike McQuaid
43a72a1a03
Merge pull request #20138 from Homebrew/rm-zap-messaging
cask/installer: remove confusing `zap` messaging
2025-06-18 07:32:47 +00:00
Patrick Linnane
989032b703
test/cask/reinstall_spec: remove confusing zap` messaging
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-06-17 21:15:49 -07:00
Patrick Linnane
7da83ee19c
cask/installer: remove confusing zap messaging
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-06-17 21:15:47 -07:00
thibhero
fe06e04e28 refactoring install.rb and reinstall.rb after removing Formula.installed 2025-06-17 21:12:47 -04:00
Thibaut Hérault
27a040cc32
Merge branch 'master' into master 2025-06-17 20:49:18 -04:00
thibhero
1b0e79121a brew style error 2025-06-17 20:36:47 -04:00
thibhero
ea7d441370 removing fixture 2025-06-17 20:21:41 -04:00
thibhero
fc18956eeb removing longer tests and putting back integration_test.rb 2025-06-17 20:21:32 -04:00
thibhero
971a8b40e6 refactoring as we can get dependants before installing 2025-06-17 19:21:17 -04:00
thibhero
8c203df671 trying to remove FormulaInstaller.installed to formulae 2025-06-17 19:20:43 -04:00
Rylan Polster
aeed5eb57a
Merge pull request #20139 from Homebrew/fix-type-mismatch-brew-info
Fix type mismatch in `brew info`
2025-06-17 21:53:47 +00:00
Rylan Polster
f71287c4a9
Fix type mismatch in brew info 2025-06-17 16:57:50 -04:00
Eric Knibbe
5ff58d2df0
download_strategy: fix caching of :latest downloads 2025-06-17 14:51:11 -04:00
Mike McQuaid
fb9d1c5a1c
Merge pull request #20133 from Homebrew/requirements
requirements: set `typed: strict`
2025-06-17 18:37:48 +00:00
Mike McQuaid
77321d6f8b
Merge pull request #20132 from Homebrew/dev-cmd
dev-cmd: set `typed: strict`
2025-06-17 18:37:03 +00:00
Mike McQuaid
e1fc5a2784
Merge pull request #20131 from Homebrew/debrew_strict
debrew: set `typed: strict`
2025-06-17 18:30:10 +00:00
Mike McQuaid
2916610699
Merge pull request #20130 from Homebrew/sorbet_cmd
cmd: set `typed: strict`
2025-06-17 18:29:23 +00:00
Mike McQuaid
9375fc21f4
requirements: set typed: strict 2025-06-17 16:34:59 +01:00
Mike McQuaid
ca1e08c7a8
dev-cmd: set typed: strict 2025-06-17 16:34:19 +01:00
Mike McQuaid
85c5f8f3a5
debrew: set typed: strict 2025-06-17 16:33:58 +01:00
Mike McQuaid
c4c66d41ef
cmd: set typed: strict 2025-06-17 16:33:16 +01:00
Mike McQuaid
3c30845240
Merge pull request #20116 from abitrolly/create-tests
Refactor `FormulaCreator` args and call `parse_url` automatically
2025-06-17 14:18:52 +00:00
Mike McQuaid
2ad0fed872
Merge pull request #20129 from Homebrew/fix_bump_sorbet
utils/github/api: fix Sorbet types.
2025-06-17 14:13:08 +00:00
Mike McQuaid
dfa79bf981
Merge pull request #20125 from Homebrew/cask_sorbet_strict
cask: move some files to strict Sorbet sigil.
2025-06-17 14:09:56 +00:00
Mike McQuaid
f2103c7138
utils/github/api: fix Sorbet types.
Let's not use `T.unsafe(nil)` but instead an empty hash.
2025-06-17 14:59:46 +01:00
Mike McQuaid
35407ab556
cask: move some files to strict Sorbet sigil. 2025-06-17 14:56:10 +01:00
Mike McQuaid
1f29f51654
dev-cmd/create: avoid duplicate presence check.
Co-authored-by: Anatoli Babenia <anatoli@rainforce.org>
2025-06-17 14:44:59 +01:00
Eric Knibbe
09eaf1495a
Merge pull request #20119 from Homebrew/audit-bundle-version
cask/audit: also check binary for minimum OS
2025-06-17 11:36:08 +00:00
Mike McQuaid
c5d091af21
Refactor/typecheck create and formula_creator 2025-06-17 11:44:15 +01:00
Mike McQuaid
768c10c6fb
Merge pull request #20124 from Homebrew/add-cask-config-rbi-compiler
Add Cask::Config RBI compiler
2025-06-17 10:32:59 +00:00
Anatoli Babenia
85d48da364
Refactor FormulaCreator args and call parse_url automatically
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2025-06-17 11:19:52 +01:00
Mike McQuaid
d7d8c61f00
Merge pull request #20121 from Homebrew/sorbet_strict_a
a*.rb: move to strict Sorbet sigil.
2025-06-17 10:05:27 +00:00
Mike McQuaid
7345607ca0
a*.rb: move to strict Sorbet sigil.
Co-authored-by: Rylan Polster <rslpolster@gmail.com>
2025-06-17 08:18:33 +01:00
Sam Ford
9c69859f99
Add Cask::Config RBI compiler
This is a naive attempt at creating an RBI compiler for the
`Cask::Config` class. `Config` contains methods like `appdir` that
are defined dynamically using the class's default values and Sorbet
doesn't understand that these methods exist or what their return
types are. This compiler works as expected and gets the job done but
I know basically nothing about Tapioca, so there may be a better way
of doing this.

For what it's worth, this isn't an issue right now but Sorbet will
surface an error once `Cask::DSL` is updated to `typed: strict` (i.e.,
`Method appdir does not exist on Cask::Config`). That's something
I've been working on and this compiler is intended as a way of
preemptively resolving that Sorbet error, so I can move forward with
the `Cask::DSL` type signature work.
2025-06-16 23:49:01 -04:00
Eric Knibbe
ab4acd655a
cask/audit: also check binary for minimum OS 2025-06-16 23:39:38 -04:00
Patrick Linnane
95f0e76154
Merge pull request #20123 from abitrolly/remove-vale-fixme
Remove `vale` FIXME
2025-06-16 19:24:14 +00:00
Anatoli Babenia
b5d4bc56fc Remove vale FIXME
https://github.com/errata-ai/vale/issues/818 is fixed a year ago
2025-06-16 21:39:39 +03:00
Mike McQuaid
e694e76857
Merge pull request #20120 from Homebrew/remove_alias_generic
Remove `alias generic_*` definitions in favour of using `super`
2025-06-16 14:11:20 +00:00
Mike McQuaid
9ac306e464
Remove alias generic_* definitions in favour of using super
This is the pattern we've been adopting for a while and it's a bit
cleaner. Let's remove all of the existing usage of the existing pattern
to avoid confusion when adopting the new one.
2025-06-16 08:10:08 +00:00
Mike McQuaid
b6167f6024
Merge pull request #20118 from Homebrew/sponsors-maintainers-man-completions
Update sponsors.
2025-06-16 07:40:51 +00:00
Mike McQuaid
ad28cc7cf5
Merge pull request #20108 from Homebrew/macos_version-upgrade-type-sigil
MacOSVersion: enable strong typing, expand tests
2025-06-16 07:37:02 +00:00
Mike McQuaid
62ca1323df
Merge pull request #20112 from Homebrew/add-newest-supported-env-var
Add HOMEBREW_MACOS_NEWEST_SUPPORTED env var
2025-06-16 07:28:44 +00:00
Mike McQuaid
b6f3b0439b
Merge pull request #20115 from abitrolly/fix-test-linking
Replace hardlinks with symlinks for `brew tests`
2025-06-16 07:28:41 +00:00
BrewTestBot
7656fee22d
Update sponsors.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-06-16 00:09:15 +00:00
Sam Ford
ea57773327
MacOSVersion: expand test coverage
This adds tests to expand coverage of `MacOSVersion` to 100% for lines
and branches.
2025-06-15 09:02:42 -04:00
Sam Ford
00249bda44
MacOSVersion: enable strong typing 2025-06-15 09:02:41 -04:00
Anatoli Babenia
d2b6531f01 Replace hardlinks with symlinks for brew tests
Fixes https://github.com/Homebrew/brew/issues/20114
2025-06-15 14:08:04 +03:00
Sam Ford
764d2b2dcc
Add HOMEBREW_MACOS_NEWEST_SUPPORTED env var
We have a `HOMEBREW_MACOS_NEWEST_UNSUPPORTED` environment variable
and this is used in `MacOSVersion` to determine prerelease versions
but we don't have a way of easily determining the newest supported
macOS version.

`bump-cask-pr` contains logic that assumes the first key/value in
`MacOSVersion::SYMBOLS` is the newest macOS version but it recently
became clear that this is a prerelease version between WWDC and the
subsequent macOS release. Similarly, `dev-cmd/generate-cask-api.rb`
tries to compute the newest stable macOS version as
`HOMEBREW_MACOS_NEWEST_UNSUPPORTED.to_i - 1` and this will fail
if/when we update that variable to `"26"`, as the macOS version
before 26 is 15, not 25.

This adds a `HOMEBREW_MACOS_NEWEST_SUPPORTED` environment variable,
so we have a straightforward way of quickly identifying the newest
supported macOS version without having to make potentially unreliable
assumptions or do computations to identify the latest non-prerelease
`MacOSVersion` value. This also updates the two aforementioned areas
to use this environment variable to produce the newest stable macOS
version symbol in a more reliable way.
2025-06-14 18:45:25 -04:00
Mike McQuaid
6301c2d31f
Merge pull request #20110 from Homebrew/api-hashable-git-config
api_hashable: retain access to global gitconfig
2025-06-14 07:54:50 +00:00
Bo Anderson
82eaabf7fe
api_hashable: retain access to global gitconfig 2025-06-14 01:54:12 +01:00
Bevan Kay
f59624623c
Merge pull request #20109 from Homebrew/sponsors-maintainers-man-completions
Update sponsors.
2025-06-14 00:52:42 +00:00
BrewTestBot
4f072136d5
Update sponsors.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-06-14 00:08:35 +00:00
Mike McQuaid
e3ae002054
Merge pull request #20107 from Homebrew/scheduled_issues
Open issues for failed scheduled workflows
2025-06-13 17:55:55 +00:00
Mike McQuaid
d2269c5b30
Open issues for failed scheduled workflows
I noticed recently the SBOM workflow was failing and had been for a long
time and we'd not noticed. I've added issues for the other workflows
that run on a schedule and fixed the updating state.

I've also renamed the SBOM workflow to `sbom.yml` to match what it does.

Co-authored-by: Rylan Polster <rslpolster@gmail.com>
2025-06-13 18:43:52 +01:00
Mike McQuaid
66621b56c9
Merge pull request #20104 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-06-13 17:15:04 +00:00
Mike McQuaid
6fb115d342
Merge pull request #20099 from Homebrew/more_update_main_changes
cmd/update*: more fixes to allow migration from `master` to `main`.
2025-06-13 16:25:56 +00:00
Mike McQuaid
08eae94955
cmd/update*: more fixes to allow migration from master to main.
We're not migrating Homebrew/brew to `main` yet but this will allow us
to ensure we have a `brew update` ready in future when we're ready to do
this.
2025-06-13 17:13:51 +01:00
Mike McQuaid
dfd0cc8d85
Merge pull request #20098 from Homebrew/hide_main_branches
Hide `main` branches from `brew tap-info` and `brew info`
2025-06-13 16:11:23 +00:00
BrewTestBot
c15dec7821
zizmor.yml: update to match main configuration 2025-06-13 15:48:23 +00:00
BrewTestBot
cf2d4a5676
actionlint.yml: update to match main configuration 2025-06-13 15:48:23 +00:00
BrewTestBot
f154eb2812
homebrew-actions.yml: update to match main configuration 2025-06-13 15:48:23 +00:00
Mike McQuaid
1cdbc38802
Merge pull request #20103 from Homebrew/sync-default-branches
Add `sync-default-branches` workflow
2025-06-13 14:02:28 +00:00
Mike McQuaid
9494385745
Merge pull request #20102 from Homebrew/sorbet-files-update
sorbet: Update RBI files.
2025-06-13 13:35:16 +00:00
Mike McQuaid
3cb4ba8c26
Merge pull request #20101 from Homebrew/homebrew_actions_main
Use Homebrew/actions/*@main in Actions workflows
2025-06-13 13:33:52 +00:00
Mike McQuaid
a0d1e1d9d6
Add sync-default-branches workflow
This will allow us to migrate Homebrew/brew to `main` when we're ready
while preserving `master` as a branch with the same contents.

Until we're ready to migrate, this will keep a `main` branch updated
with `master`.
2025-06-13 14:24:18 +01:00
BrewTestBot
6105a241f8
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sorbet.yml) workflow.
2025-06-13 13:23:02 +00:00
Mike McQuaid
be6cee3006
Use Homebrew/actions/*@main in Actions workflows
We've migrated Homebrew/actions to use the `main` branch now so let's
update these references.
2025-06-13 14:22:09 +01:00
Mike McQuaid
cba6ecce92
Merge pull request #20100 from Homebrew/cask-initialize-yet-more-instance-variables
Cask: Initialize yet more instance variables
2025-06-13 12:53:37 +00:00
Sam Ford
4a4f7a541a
Cask: Initialize yet more instance variables
I previously added some instance variables in `Cask::DSL` to its
`initialize` method but I missed some last time, so we still see
warnings like `The class Cask::DSL reached 8 shape variations,
instance variables accesses will be slower and memory usage increased.
It is recommended to define instance variables in a consistent order,
for instance by eagerly defining them all in the #initialize method.`

This initializes more instance variables in `Cask` classes to resolve
other situations where this warning may occur. I've been testing this
for a while and haven't see any warnings with these changes but
there's always a chance that there's still more work to be done.
2025-06-13 08:32:56 -04:00
Mike McQuaid
af997ea2ad
Hide main branches from brew tap-info and brew info
These are basically as "default" as `master` now so we can hide them.
2025-06-13 12:09:02 +01:00
Mike McQuaid
e049ee3d3b
Merge pull request #20097 from Homebrew/dependabot/github_actions/github-actions-89d009b5d5
build(deps): bump the github-actions group with 3 updates
2025-06-13 10:51:48 +00:00
dependabot[bot]
c8213558ef
build(deps): bump the github-actions group with 3 updates
Bumps the github-actions group with 3 updates: [github/codeql-action](https://github.com/github/codeql-action), [ruby/setup-ruby](https://github.com/ruby/setup-ruby) and [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance).


Updates `github/codeql-action` from 3.28.19 to 3.29.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](fca7ace96b...ce28f5bb42)

Updates `ruby/setup-ruby` from 1.244.0 to 1.245.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](13e7a03dc3...a4effe49ee)

Updates `actions/attest-build-provenance` from 2.3.0 to 2.4.0
- [Release notes](https://github.com/actions/attest-build-provenance/releases)
- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md)
- [Commits](db473fddc0...e8998f9491)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: ruby/setup-ruby
  dependency-version: 1.245.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/attest-build-provenance
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-13 08:22:08 +00:00
Mike McQuaid
5fc7a225c1
Merge pull request #20095 from Homebrew/fix-vscode-ruby-lsp-codespaces
Fix vscode ruby-lsp setup for GitHub codespaces
2025-06-13 07:59:10 +00:00
Rylan Polster
29e7229463
Merge pull request #20094 from Homebrew/remove-deprecated-vscode-sorbet-option
Remove deprecated vscode sorbet option
2025-06-13 06:16:13 +00:00
Rylan Polster
22dfe9267e
Fix vscode ruby-lsp setup for GitHub codespaces 2025-06-12 18:24:49 -04:00
Rylan Polster
35962a447d
Remove deprecated vscode sorbet option 2025-06-12 17:30:47 -04:00
Patrick Linnane
d428e832ee
Merge pull request #20093 from Homebrew/brew-mcp-settings
Add MCP server VS Code config
2025-06-12 20:48:08 +00:00
Patrick Linnane
ac6a7b476b
Add MCP server VS Code config
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-06-12 10:58:21 -07:00
Rylan Polster
e66bb7ece5
Merge pull request #20092 from Homebrew/revert-20080-cask-variations-only-supported
Revert "Only generate cask variations for supported macOS configurations"
2025-06-12 16:43:59 +00:00
Mike McQuaid
ec539147a7
Merge pull request #20089 from Homebrew/revert-20079-fix-tests-only-files
Revert "Filter `brew tests` spec files appropriately for each OS"
2025-06-12 16:40:34 +00:00
Mike McQuaid
fca5630b23
Merge pull request #20091 from Homebrew/update-docs-workflow
Generate template API samples for `formulae.brew.sh` docs workflow
2025-06-12 16:40:30 +00:00
Rylan Polster
54b349bb89
Revert "Only generate cask variations for supported macOS configurations" 2025-06-12 11:53:01 -04:00
Mike McQuaid
f234423913
dev-cmd/tests: fix require ordering.
This needs to happen after `setup_environment!` so that
`HOMEBREW_TEST_GENERIC_OS` is set and `OS.linux?` and `OS.mac?` both
`return false`.
2025-06-12 16:43:50 +01:00
Mike McQuaid
9541ad8931
workflows/docs: remove comment. 2025-06-12 16:39:55 +01:00
Rylan Polster
577f01c30e
Generate template API samples for formulae.brew.sh docs workflow 2025-06-12 11:19:19 -04:00
Eric Knibbe
8063291f7c
Merge pull request #20090 from Lekensteyn/remove-force-auto-update-option
Remove unused --force-auto-update option
2025-06-12 13:51:36 +00:00
Mike McQuaid
1a5afaf739
Merge pull request #20082 from alex/strict-check-for-duplicate-prs
Add strict parameter to `GitHub::check_for_duplicate_pull_requests`
2025-06-12 13:23:17 +00:00
Mike McQuaid
50bdb40efb
Merge pull request #20080 from Homebrew/cask-variations-only-supported
Only generate cask variations for supported macOS configurations
2025-06-12 13:22:45 +00:00
Alex Gaynor
efa0c9554a fixes #19828 -- added a strict parameter to GitHub::check_for_duplicate_pull_requests 2025-06-12 08:45:16 -04:00
Mike McQuaid
d68b890d61
Merge pull request #20087 from Homebrew/bump-formula-pr-body-fix
dev-cmd/bump-formula-pr: handle null body
2025-06-12 12:17:17 +00:00
Peter Wu
770335f72e Remove unused --force-auto-update option
Remove the `brew tap --force-auto-update` option and the
`force_auto_update` configuration file option from Homebrew Bundles.

Fixes #19856
2025-06-12 14:16:12 +02:00
Bo Anderson
bf6f813492
dev-cmd/bump-formula-pr: handle null body 2025-06-12 04:48:15 +01:00
Eric Knibbe
a63baa62d2
Merge pull request #20086 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-06-12 02:45:38 +00:00
thibhero
d525e25e99 resolving discussions 2025-06-11 22:41:22 -04:00
thibhero
fb5ddde5ad resolving discussions 2025-06-11 22:36:57 -04:00
thibhero
7e876e4681 resolving discussions 2025-06-11 22:35:00 -04:00
BrewTestBot
498ab9e4b7
homebrew-actions.yml: update to match main configuration 2025-06-12 02:23:28 +00:00
Eric Knibbe
bb0bb27591
Merge pull request #20081 from Homebrew/ignore-intel-only
cask/audit: skip caveats check for Intel-only casks
2025-06-12 02:13:30 +00:00
Rylan Polster
e5667cb5ae
Only generate cask variations for supported macOS configurations 2025-06-11 20:30:14 -04:00
Rylan Polster
7a806ac1bd
Merge pull request #20083 from Homebrew/sponsors-maintainers-man-completions
Update sponsors.
2025-06-12 00:20:42 +00:00
Rylan Polster
5831783a85
Merge pull request #20079 from Homebrew/fix-tests-only-files
Filter `brew tests` spec files appropriately for each OS
2025-06-12 00:15:21 +00:00
BrewTestBot
728440df3a
Update sponsors.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-06-12 00:08:55 +00:00
Rylan Polster
e5495d097e
Add missing require 2025-06-11 19:56:37 -04:00
Rylan Polster
b242abfdf0
Fix cask API tests 2025-06-11 19:44:26 -04:00
Rylan Polster
ce72e34b19
Filter brew tests spec files appropriately for each OS 2025-06-11 15:59:21 -04:00
Eric Knibbe
689ff373d8
cask/audit: skip caveats check for Intel-only casks 2025-06-11 15:56:07 -04:00
Mike McQuaid
4e0e5782ec
Merge pull request #20078 from Homebrew/schema-update
data/schemas: update schema data.
2025-06-11 16:26:51 +00:00
Mike McQuaid
1857fe4670
Merge pull request #20077 from Homebrew/workflows_tweaks
Tweak GitHub Actions workflows
2025-06-11 15:51:47 +00:00
BrewTestBot
755353570d
data/schemas: update schema data.
Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/schemas.yml).
2025-06-11 15:39:36 +00:00
Mike McQuaid
7bd8642bfc
Tweak GitHub Actions workflows
- prepare to use `main` instead of `master`.
- use synced `actionlint.yml` to simplify Homebrew/.github sync logic.
- fix some broken workflow PR opening logic.
2025-06-11 16:39:03 +01:00
Mike McQuaid
dffa42839c
Merge branch 'master' into master 2025-06-11 13:24:46 +01:00
Mike McQuaid
8aeb93ec98
Merge pull request #20073 from Homebrew/attempt_master_to_main_migration
cmd/update: attempt migration from `master` to `main` branch.
2025-06-11 07:51:00 +00:00
Mike McQuaid
837b28ba79
cmd/update: attempt migration from master to main branch.
This should allow any repositories that change from `master` to `main`
to be automatically migrated by `brew update` without requiring manual
intervention or displaying errors to the user.
2025-06-11 08:38:32 +01:00
Eric Knibbe
11f4d304ad
Merge pull request #20076 from Homebrew/sponsors-maintainers-man-completions
Update manpage and completions.
2025-06-10 21:22:07 +00:00
BrewTestBot
347b287967
Update manpage and completions.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-06-10 21:00:09 +00:00
Eric Knibbe
721def31a5
Merge pull request #20075 from Homebrew/no-nested-depends_on
rubocops/cask/no_overrides: avoid nested `depends_on macos:`
2025-06-10 20:47:19 +00:00
Patrick Linnane
9540bfe5c4
Merge pull request #20074 from Homebrew/contributions_csv_output
dev-cmd/contributions: improve CSV output.
2025-06-10 20:47:11 +00:00
Eric Knibbe
ea8152757e
rubocops/cask/no_overrides: avoid nested depends_on macos: 2025-06-10 14:31:58 -04:00
Mike McQuaid
8d4395118c
dev-cmd/contributions: improve CSV output.
Output messages to stderr when CSV output is enabled.

This allows doing `brew contributions --csv > contributions.csv` to
save the output to a file.
2025-06-10 17:28:21 +01:00
Rylan Polster
324762b895
Merge pull request #20072 from Homebrew/sponsors-maintainers-man-completions
Update manpage and completions.
2025-06-10 16:02:06 +00:00
BrewTestBot
0af29dec14
Update manpage and completions.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-06-10 15:45:47 +00:00
Mike McQuaid
144113318e
Merge pull request #20071 from Homebrew/brew_deps_output_warning
cmd/deps: add warning when not using runtime dependencies.
2025-06-10 15:41:25 +00:00
Mike McQuaid
724c10962e
Merge pull request #20070 from Homebrew/tests_default_api
tests: default to API mode enabled.
2025-06-10 15:32:45 +00:00
Mike McQuaid
d2f9677cde
cmd/deps: add warning when not using runtime dependencies.
This should provide clarify as to why the output may differ from a
formula's declared dependencies.
2025-06-10 15:55:39 +01:00
Mike McQuaid
e9f55a8f71
tests: default to API mode enabled.
While we're here, also add `brew tests --no-parallel` which I relied
on during testing.

Pretty much anywhere we rely on a stubbed formula on disk to work: we
need to disable the API.
2025-06-10 15:53:27 +01:00
Bo Anderson
3c9a7332d4
Merge pull request #20066 from Homebrew/sorbet-files-update
sorbet: Update RBI files.
2025-06-10 02:34:41 +00:00
BrewTestBot
c086bdcbba
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/master/.github/workflows/sorbet.yml) workflow.
2025-06-10 00:29:54 +00:00
Bo Anderson
7b4ef99fed
Merge pull request #20062 from Homebrew/macos-26
Preliminary macOS 26 (Tahoe) support
2025-06-09 23:22:53 +00:00
Bo Anderson
b8e2cddbbd
Preliminary macOS 26 (Tahoe) support 2025-06-09 21:41:49 +01:00
Bo Anderson
ecd0d99001
Merge pull request #20063 from Homebrew/vendor-install-fail-fix
cmd/vendor-install: fix exit code handling for curl
2025-06-09 19:38:07 +00:00
Mike McQuaid
cfdc6fd3fe
Merge pull request #20061 from Homebrew/extend_cleanup
Cleanup `extend/` directory usage.
2025-06-09 19:37:14 +00:00
Bo Anderson
57ed94c421
cmd/vendor-install: fix exit code handling for curl 2025-06-09 19:59:41 +01:00
Mike McQuaid
dc71b7c8f6
Cleanup extend/ directory usage.
- move some things out of `extend` that don't really fit there e.g.
  `Module`s that are included but not doing any
  overriding/monkeypatching
- move some code into `extend/os` to fix all remaining
  `rubocop:todo Homebrew/MoveToExtendOS`s
- remove some unneeded `bundle` skipper code that doesn't really make
  sense given our current bottling strategy
- extract some `Pathname` extensions to `extend/pathname` for separate
  files
- move a `ENV` `Kernel` extension into `kernel.rb`
- `odeprecate` a seemingly unused backwards compatibility method
- move `readline_nonblock` from a monkeypatch to a
  `ReadlineNonblock.read` method as its only used in one place
- fix up a link in documentation
2025-06-09 19:06:16 +01:00
Mike McQuaid
8ebb2cd65b
Merge pull request #20060 from Homebrew/more_ci_tweaks
workflows/tests.yml: more CI tweaks.
2025-06-09 16:39:18 +00:00
Mike McQuaid
63abe0bebf
workflows/tests.yml: more CI tweaks.
- use `macos-15` for tap syntax, no reason to use (old) `macos-14`
- use `macos-latest` for all macOS jobs where we're only testing a
  single macOS and single Linux target
- add `test default formula` jobs for Linux `arm64`
- rename a few more jobs for consistency and clarity
2025-06-09 17:28:17 +01:00
Mike McQuaid
97bc7b1661
Merge pull request #20054 from Homebrew/remove_ci_warnings
Reduce Homebrew/brew CI warnings
2025-06-09 12:07:23 +00:00
Mike McQuaid
cc03340af3
Reduce Homebrew/brew CI warnings
- Remove a bunch of non-actionable/unnecessary noise in GitHub Actions
  CI.
- Limit number of threads used to generate analytics API data to avoid
  reproducible failures producing errors and requiring retries.
- Move to Debian Old Stable for testing non-system `glibc`.
- Remove unneeded core taps/updates.
- Improve naming of CI jobs to clarify purpose i.e. we're testing
  things work on Linux, not Ubuntu specifically.
- Remove dedicated non-online/non-generic Linux `brew tests` jobs from
  3 to 1.

Co-authored-by: Rylan Polster <rslpolster@gmail.com>
2025-06-09 12:47:22 +01:00
thibhero
32a53ab285 resolving error typecheck 2025-06-09 00:42:24 -04:00
thibhero
d39bded2f1 Merge branch 'refactor-install'
# Conflicts:
#	Library/Homebrew/test/cmd/upgrade_spec.rb
2025-06-09 00:35:40 -04:00
thibhero
aa47105d2a refactoring code 2025-06-09 00:14:16 -04:00
thibhero
a8638270f2 putting up to date install test 2025-06-08 12:35:10 -04:00
thibhero
8222b192ec updating upgrade to work 2025-06-08 12:34:56 -04:00
thibhero
a5251b2fb6 refactoring install 2025-06-08 12:34:24 -04:00
thibhero
fd159ed32c updating ask function 2025-06-08 11:32:21 -04:00
thibhero
628d265d7a updating test for upgrade 2025-06-08 11:31:51 -04:00
thibhero
27f7f282be refactoring homebrew upgrade for ask option 2025-06-08 11:31:40 -04:00
Rylan Polster
1f37a11b79
Merge pull request #20051 from Homebrew/internal-api-bare-minimum
Reduce the internal formula API to contain the bare minimum data
2025-06-06 16:45:40 +00:00
Mike McQuaid
fda164535e
Merge pull request #20059 from Homebrew/improve_caveats_completions
Improve completions (and elisp) output in caveats
2025-06-06 16:44:33 +00:00
Mike McQuaid
ff710f8191
Improve completions (and elisp) output in caveats
Instead of repeatedly outputting the same identical messages across
multiple packages and repeating them all for every package after they
were all installed: just output the identical messages in the final
caveats output instead.
2025-06-06 17:09:28 +01:00
Mike McQuaid
dd7b95439a
Merge pull request #20057 from Homebrew/cask_loader_error_handling
cask_loader: improve error handling.
2025-06-06 15:10:40 +00:00
Mike McQuaid
e7f667c198
cask_loader: improve error handling.
Handle weird edge cases where we try to read a cask from invalid paths.
2025-06-06 14:19:00 +01:00
Mike McQuaid
b23bc5e0fe
Merge pull request #20058 from Homebrew/dependabot/github_actions/github-actions-694872dfd1
build(deps): bump github/codeql-action from 3.28.18 to 3.28.19 in the github-actions group
2025-06-06 11:30:26 +00:00
dependabot[bot]
08e9a4365f
build(deps): bump github/codeql-action in the github-actions group
Bumps the github-actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.28.18 to 3.28.19
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](ff0a06e83c...fca7ace96b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 08:33:23 +00:00
Rylan Polster
73b64390b3
Use existing Utils::Bottles::Collector#specification_for method 2025-06-05 12:38:15 -04:00
Rylan Polster
e83dc1cb3c
Fallback to older bottle hashes when viable 2025-06-05 11:32:47 -04:00
Eric Knibbe
0c4672a323
Merge pull request #20055 from Homebrew/cop-cask-url-verified
rubocops/cask/url: put keyword parameters on a new line
2025-06-05 15:32:32 +00:00
Mike McQuaid
1d2f045ecf
Merge pull request #20047 from Homebrew/brew_sh_profiles
`brew (bundle|) sh`: use user's configuration but override prompts.
2025-06-05 14:54:56 +00:00
Eric Knibbe
c75122c694
rubocops/cask/url: put keyword parameters on a new line 2025-06-05 10:53:34 -04:00
Mike McQuaid
5fe43ed3f2
brew (bundle|) sh: use user's configuration but override prompts.
This was more painful that I expected but will allow `brew bundle sh`
and `brew sh` to use the user's configuration but use our custom prompt
for Bash and ZSH.
2025-06-05 15:43:34 +01:00
Mike McQuaid
485f1abbee
Merge pull request #20053 from Homebrew/skip_zero_values
bin/brew: don't copy across zeroed env values.
2025-06-05 07:43:17 +00:00
Mike McQuaid
916c25ef18
bin/brew: don't copy across zeroed env values. 2025-06-05 08:33:08 +01:00
Rylan Polster
e47bc2fb86
Use hashes of arrays instead 2025-06-05 03:15:44 -04:00
Rylan Polster
b44ec56267
Reduce the internal formula API to contain the bare minimum data 2025-06-05 02:08:29 -04:00
Rylan Polster
0b67caf718
Merge pull request #20046 from Homebrew/internal-api-switch
Add undocumented `HOMEBREW_USE_INTERNAL_API` switch
2025-06-04 20:40:05 +00:00
Rylan Polster
71c8174136
Add undocumented HOMEBREW_USE_INTERNAL_API switch 2025-06-04 16:29:43 -04:00
Rylan Polster
6f8d31d698
Merge pull request #20048 from Homebrew/update-expat-version
os/mac/pkgconfig/15: update `expat` version to 2.7.1
2025-06-04 20:13:05 +00:00
Rylan Polster
da624601bb
os/mac/pkgconfig/15: update expat version 2025-06-04 15:46:41 -04:00
Mike McQuaid
68ef29fb5c
Merge pull request #20045 from Homebrew/fix-sharded-api
Fix sharded API structure to match existing API
2025-06-04 07:58:26 +00:00
Mike McQuaid
e825ceea0a
Merge pull request #20041 from Homebrew/mcp_server
Add `brew mcp-server`: a MCP server for Homebrew.
2025-06-04 07:58:01 +00:00
Eric Knibbe
ab1c3ed5f8
Merge pull request #20044 from Homebrew/show-env-var-associations
parser: show related environment variable in switch description
2025-06-04 01:11:58 +00:00
Rylan Polster
fa45209f09
Fix sharded API structure to match existing API 2025-06-03 16:58:47 -04:00
Eric Knibbe
3dc9e88542
parser: show related env var in switch description 2025-06-03 13:57:42 -04:00
Rylan Polster
317110f6f4
Merge pull request #20042 from Homebrew/refactor-bottle-tag-handling
Refactor `OnSystem` and `SimulateSystem` bottle tag handling
2025-06-03 16:22:53 +00:00
Rylan Polster
c03f70f1dc
Refactor OnSystem and SimulateSystem bottle tag handling 2025-06-03 11:57:17 -04:00
Mike McQuaid
21e3621132
Merge pull request #20040 from Homebrew/brew_sh_tests
test/cmd: add more shell tests.
2025-06-03 14:33:47 +00:00
Mike McQuaid
76c4eb60ee
test/cmd: add more shell tests.
This should help ensure that these don't regress.
2025-06-03 15:24:19 +01:00
Mike McQuaid
f9471f9591
Add brew mcp-server: a MCP server for Homebrew.
Add a new `brew mcp-server` command for a Model Context Protocol (MCP)
server for Homebrew. This integrates with AI/LLM tools like Claude,
Claude Code and Cursor.

It currently supports the calls needed/used by the MCP Inspector and
Cursor (where I've tested it).

It provides as `tools` the subcommands output by `brew help` but should
be fairly straightforward to add more in future.

It is implemented in a slightly strange way (a standalone Ruby command
called from a shell command) as MCP servers need a faster startup time
than a normal Homebrew Ruby command allows and fail if they don't get
it.

There are a few Ruby libraries available but, given how relatively
simplistic the implementation is, it didn't feel worthwhile to use and
vendor them.
2025-06-03 15:22:33 +01:00
Mike McQuaid
89739ac615
Merge pull request #20039 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-06-03 08:23:41 +00:00
Mike McQuaid
29ffef482c
Merge pull request #20038 from Homebrew/shard-json-api
Shard JSON API by OS/Arch combination
2025-06-03 08:22:10 +00:00
BrewTestBot
175eb65073
dependabot.yml: update to match main configuration 2025-06-03 08:05:26 +00:00
Rylan Polster
0f03757e8f
Shard JSON API by OS/Arch combination 2025-06-02 23:06:02 -04:00
Mike McQuaid
a0c89e4a7f
Merge pull request #20037 from Homebrew/move_sudo_reset_timestamp
brew.sh: move sudo reset timestamp.
2025-06-03 01:27:47 +00:00
Mike McQuaid
7c5affa824
brew.sh: move sudo reset timestamp.
Let's move this from `bin/brew` to make things like e.g. `brew --prefix`
or `brew shellenv` not reset the sudo timestamp.

This is still in a place that ensures that e.g. no untrusted formula or
tap code has been run yet so should have no security implications but
provide mild usability improvements.
2025-06-02 15:09:27 +01:00
Mike McQuaid
d914a72122
Merge pull request #20030 from Homebrew/rubocop-messages
audits: quote and reword problem description text
2025-06-02 08:02:20 +00:00
thibhero
7c3281f51e Merge remote-tracking branch 'tyuwags/master' 2025-05-31 23:03:40 -04:00
thibhero
01ad6b53d3 double quotes for brew style 2025-05-31 23:02:01 -04:00
thibhero
ab3b2736b5 double quotes for brew style 2025-05-31 21:35:35 -04:00
Thibaut Hérault
326376ef44 Removing attributes from macOS 2025-06-01 03:25:16 +02:00
thibhero
b1c8567977 adding tarball parent for linux 2025-05-31 14:17:40 -04:00
thibhero
b0b29f9b53 updating name tarball for linux 2025-05-31 14:03:08 -04:00
thibhero
960b4343cc updating tarball to remove attributes from MacOS 2025-05-31 13:25:25 -04:00
thibhero
fbd13203d8 Merge remote-tracking branch 'tyuwags/master' 2025-05-31 12:55:49 -04:00
thibhero
19134b3005 making tests more robust with bottles to verify the whole hierarchy oh dependencies and dependants is upgraded as expected 2025-05-31 12:54:53 -04:00
thibhero
3f1341eb6a modifying ask function as it didn't find the whole hierarchy for parents 2025-05-31 12:53:38 -04:00
thibhero
3963af774a adding tarball for the different tests in upgrade_spec.rb and install_spec.rb 2025-05-31 12:52:34 -04:00
Eric Knibbe
cd6777fc73
audits: quote and reword problem description text 2025-05-30 23:49:26 -04:00
Bo Anderson
54c8b127ea
Merge pull request #20028 from Homebrew/sponsors-maintainers-man-completions
Update manpage and completions.
2025-05-31 02:23:19 +00:00
Mike McQuaid
bdbd80671a
Merge pull request #20026 from abitrolly/non-archive-fix
create: fix archive check if HTML starts with spaces
2025-05-30 16:49:09 +00:00
Mike McQuaid
e71b1473b8
formula_creator: tweak variable name 2025-05-30 14:55:50 +01:00
Mike McQuaid
8c6b3db1cd
Merge pull request #20029 from Homebrew/dependabot/github_actions/github-actions-4335f8aa65
build(deps): bump the github-actions group with 2 updates
2025-05-30 10:37:47 +00:00
dependabot[bot]
5805e9d597
build(deps): bump the github-actions group with 2 updates
Bumps the github-actions group with 2 updates: [docker/build-push-action](https://github.com/docker/build-push-action) and [actions/stale](https://github.com/actions/stale).


Updates `docker/build-push-action` from 6.17.0 to 6.18.0
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](1dc7386353...263435318d)

Updates `actions/stale` from 9.0.0 to 9.1.0
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](28ca103628...5bef64f19d)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/stale
  dependency-version: 9.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-30 08:29:10 +00:00
Anatoli Babenia
87e57368d4 create: explain file header length logic 2025-05-30 11:12:36 +03:00
Anatoli Babenia
d860fa1fa8 create: fix archive check if HTML starts with spaces 2025-05-30 11:12:36 +03:00
BrewTestBot
3c693459bd
Update manpage and completions.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-05-30 07:36:42 +00:00
Mike McQuaid
e6377ed0c1
Merge pull request #19945 from botantony/cabal
dev-cmd/create: add `--cabal` switch
2025-05-30 07:24:37 +00:00
Bevan Kay
6278ac1801
Merge branch 'master' into cabal 2025-05-29 22:44:20 +10:00
Mike McQuaid
0cd1e6ca5b
Merge pull request #20024 from Homebrew/docs-livecheck-review
docs/Brew-Livecheck review
2025-05-29 07:49:41 +00:00
Eric Knibbe
493f2aa9f0
docs/Brew-Livecheck review 2025-05-28 13:53:38 -04:00
Mike McQuaid
f3c79353be
Merge pull request #20021 from botantony/no_autobump_constant
autobump_constants: add `:requires_manual_review` reason
2025-05-28 15:46:46 +00:00
botantony
9425734b4f
autobump_constants: add :requires_manual_review reason
Signed-off-by: botantony <antonsm21@gmail.com>
2025-05-27 21:48:58 +02:00
Bo Anderson
fe3783d711
Merge pull request #20018 from koddsson/fetch-repo-before-asserting-default-branch
tap: fix handling of `--repair` with no branches
2025-05-27 17:11:00 +00:00
Kristján Oddsson
972414cec7 add a T.must after fetching tap 2025-05-27 16:55:00 +00:00
Kristján Oddsson
7476f09672 format 2025-05-27 16:43:54 +00:00
Kristján Oddsson
0480411c6f
use conditional assignment operator
Co-authored-by: Bo Anderson <mail@boanderson.me>
2025-05-27 16:35:50 +00:00
Kristján Oddsson
24d9524bbd remove T.must to avoid full fetch 2025-05-27 16:01:35 +00:00
Kristján Oddsson
9e05995299 move git fetch before getting origin_branch_name 2025-05-27 14:54:57 +00:00
Patrick Linnane
0e14dd8d3a
Merge pull request #20013 from Homebrew/sponsors-maintainers-man-completions
Update manpage and completions.
2025-05-27 13:27:11 +00:00
Mike McQuaid
ff568c2179
Merge pull request #20016 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-05-27 13:24:37 +00:00
Mike McQuaid
e6aed19670
Merge pull request #20015 from Homebrew/support-tiers-codeowners
docs/Support-Tiers: tweak wording, add CODEOWNERS.
2025-05-27 13:23:31 +00:00
BrewTestBot
8fe9691b13
Update manpage and completions.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-05-27 14:14:59 +01:00
BrewTestBot
9d949f3f2f
stale-issues.yml: update to match main configuration 2025-05-27 14:14:45 +01:00
Mike McQuaid
214074cf02
docs/Support-Tiers: tweak wording, add CODEOWNERS.
Let's improve the wording of the Support Tiers document and add it to
a (new) CODEOWNERS file to ensure that I or the TSC review changes.
2025-05-27 14:14:05 +01:00
Mike McQuaid
600cb4544d
Merge pull request #20017 from Homebrew/release_fixes
workflows/pkg-installer: fix release upload.
2025-05-27 11:15:51 +00:00
Mike McQuaid
2131d70265
workflows/pkg-installer: fix release upload.
- Get the release tag from the installer path.
- Remove unnecessary `gh` installation.
- Remove failing test that I can't fix.
2025-05-27 11:47:00 +01:00
Mike McQuaid
171fba9c84
Merge pull request #20011 from Homebrew/revert-19946-SMillerDev-patch-1
Revert "feat: allow env for write_jar_script"
2025-05-26 16:28:31 +00:00
Mike McQuaid
1035024b83
Revert "feat: allow env for write_jar_script" 2025-05-26 17:19:48 +01:00
Sean Molenaar
f420f0f63d
Merge pull request #19946 from Homebrew/SMillerDev-patch-1
feat: allow env for write_jar_script
2025-05-26 14:36:15 +00:00
Sean Molenaar
81ea767ea3
Update Library/Homebrew/extend/pathname.rb 2025-05-26 21:17:05 +09:00
Bevan Kay
d416755560
Merge pull request #20005 from gibfahn/bump_write_only
bump-pr: respect --write-only flag and skip git operations
2025-05-26 08:41:55 +00:00
Mike McQuaid
a2894caceb
Merge pull request #20004 from Homebrew/formula-creator-ruby-rework
formula_creator: Update Ruby template
2025-05-26 07:41:51 +00:00
Mike McQuaid
3f15e0eef0
dev-cmd/bump-formula-pr: fix style. 2025-05-26 08:40:14 +01:00
Patrick Linnane
dc0f9d50fd
Merge pull request #20008 from Homebrew/powershell-completion
feat: add _ to powershell completion filename
2025-05-25 04:55:46 +00:00
Patrick Linnane
9acd68b8c1
Merge pull request #20007 from Homebrew/SMillerDev-patch-2
feat: add clarification of macOS patches in Support-Tiers
2025-05-25 04:55:24 +00:00
Daeho Ro
24cd62140d
feat: add _ to powershell completion filename 2025-05-25 00:15:26 +09:00
Sean Molenaar
e76a02eadd
feat: add clarification of macOS patches in Support-Tiers 2025-05-24 17:03:40 +02:00
Gibson Fahnestock
97acfb94ce
bump-pr: respect --write-only flag and skip git operations
The flag used to work well, but at some point started to run more and
more git actions. We use this to update formula and casks in other
homebrew taps, and it works well except for this issue.
2025-05-24 13:14:00 +01:00
Patrick Linnane
5ee4e609ac
formula_creator: Update Ruby template
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-05-23 20:58:02 -07:00
Eric Knibbe
f4375b0750
Merge pull request #20003 from Homebrew/dependabot/github_actions/github-actions-d0caf880e0
build(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in the github-actions group
2025-05-23 14:03:07 +00:00
dependabot[bot]
90323ffc3c
build(deps): bump codecov/test-results-action
Bumps the github-actions group with 1 update: [codecov/test-results-action](https://github.com/codecov/test-results-action).


Updates `codecov/test-results-action` from 1.1.0 to 1.1.1
- [Release notes](https://github.com/codecov/test-results-action/releases)
- [Commits](f2dba722c6...47f89e9acb)

---
updated-dependencies:
- dependency-name: codecov/test-results-action
  dependency-version: 1.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-23 08:38:21 +00:00
Mike McQuaid
51dc147d90
Merge pull request #20002 from Homebrew/selective-bundle-cleanup
bundle: add support for selective cleanup
2025-05-23 08:33:49 +00:00
Mike McQuaid
34b22000d6
Merge pull request #20001 from Homebrew/docs-typechecking-review
docs/Typechecking review
2025-05-23 08:33:03 +00:00
Bo Anderson
418a771d12
bundle: add support for selective cleanup 2025-05-23 06:19:01 +01:00
Eric Knibbe
2457fb123f
docs/Typechecking review 2025-05-22 22:54:51 -04:00
Eric Knibbe
241dbba55c
Merge pull request #20000 from Homebrew/docs-internal-links
docs: localize internal URLs
2025-05-23 00:49:57 +00:00
Eric Knibbe
6a07851c46
docs: localize internal URLs 2025-05-22 12:17:52 -04:00
Mike McQuaid
3f450e5f10
Merge pull request #19959 from botantony/uninstall-etc
uninstall: exclude configurational filess that belong to other formulae
2025-05-22 09:17:47 +00:00
Mike McQuaid
8d30251f9f
Merge pull request #19998 from botantony/extract-plist-no-autobump
cask/dsl: set `no_autobump!` if livecheck uses `:extract_plist`
2025-05-22 09:17:39 +00:00
botantony
ac2d167ffc
cask/dsl: set no_autobump! if livecheck uses :extract_plist
Signed-off-by: botantony <antonsm21@gmail.com>
2025-05-21 23:23:29 +02:00
Mike McQuaid
4887d58826
Merge pull request #19995 from Homebrew/fix_truncate
dev-cmd/bump-formula-pr: use `Formatter.truncate`.
2025-05-21 16:16:56 +00:00
Mike McQuaid
77c7587d77
Merge pull request #19993 from Homebrew/bundle_exec_exit_code
bundle/commands/exec: fix exit code handling.
2025-05-21 16:10:53 +00:00
Mike McQuaid
e5f844ec86
docs/Rakefile: fix/ignore more broken URLs. 2025-05-21 17:06:38 +01:00
Mike McQuaid
4aa7f83954
dev-cmd/bump-formula-pr: use Formatter.truncate.
Add new `Formatter.truncate` method, tests and use it.
2025-05-21 17:02:18 +01:00
Anton Melnikov
2f10b1cd6e
uninstall: style suggestions
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2025-05-21 17:54:21 +02:00
Mike McQuaid
daeb5b1dfe
Merge pull request #19992 from Homebrew/dependabot/github_actions/github-actions-36989fa650
build(deps): bump the github-actions group with 2 updates
2025-05-21 15:40:52 +00:00
Mike McQuaid
e8e8fcea02
bundle/commands/exec: fix exit code handling.
In some `brew tests` runs, `$CHILD_STATUS` can be `nil`.
Let's handle this and avoid these flaky tests.
2025-05-21 16:31:30 +01:00
dependabot[bot]
83db7a31ec
build(deps): bump the github-actions group with 2 updates
Bumps the github-actions group with 2 updates: [ruby/setup-ruby](https://github.com/ruby/setup-ruby) and [actions/stale](https://github.com/actions/stale).


Updates `ruby/setup-ruby` from 1.242.0 to 1.244.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](cb0fda56a3...13e7a03dc3)

Updates `actions/stale` from 9.0.0 to 9.1.0
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](28ca103628...5bef64f19d)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.244.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/stale
  dependency-version: 9.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-21 15:29:12 +00:00
Mike McQuaid
85bd5af800
Merge pull request #19991 from Homebrew/dependabot_revamp
dependabot: use more groups.
2025-05-21 15:16:56 +00:00
botantony
3dad44c9f3
uninstall: exclude configurational filess that belong to other formulae
Signed-off-by: botantony <antonsm21@gmail.com>
2025-05-21 17:05:51 +02:00
Issy Long
01e0d4b311
Merge pull request #19989 from Homebrew/truncate-really-long-release-notes
Truncate long release notes in formula PR descriptions
2025-05-21 14:48:53 +00:00
Eric Knibbe
8f3315bff5
Merge pull request #19983 from Homebrew/audit-rosetta-skipping
cask/audit: skip audit_rosetta on Intel-only casks & OSes
2025-05-21 14:26:37 +00:00
Eric Knibbe
5027a9d2f2
cask/audit: skip audit_rosetta on Intel-only casks & OSes 2025-05-21 10:14:08 -04:00
Issy Long
63cdd0723c
Truncate long release notes in formula PR descriptions
- Some formula bumps have really long release notes which causes their
  bump PRs to exceed GitHub's 65k character limit for issue bodies.
2025-05-21 13:20:48 +00:00
Issy Long
8097268267
Merge pull request #19990 from Homebrew/sponsors-maintainers-man-completions
Update maintainers.
2025-05-21 13:17:44 +00:00
Mike McQuaid
6527fc1bf3
dependabot: use more groups.
- update all dependabot types once a week on Friday so they can make it
  into the new release on (usually) Monday
- use dependabot groups for all changes so we can merge them all at once
- use the `directories` option to DRY things up
2025-05-21 14:17:37 +01:00
BrewTestBot
b826bbf23e
Update maintainers.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-05-21 13:08:27 +00:00
Mike McQuaid
8b32d019d4
Merge pull request #19986 from Homebrew/fix_update_maintainers
dev-cmd/update-maintainers: various fixes.
2025-05-21 12:42:38 +00:00
Mike McQuaid
3482655284
Merge pull request #19987 from Homebrew/fix_tap_new_root_url_warning
dev-cmd/tap-new: fix root_url warning.
2025-05-21 12:34:16 +00:00
Issy Long
ee15435a90
Fix multiline hash key/value indentation 2025-05-21 14:31:58 +02:00
Mike McQuaid
c1a2f94e01
dev-cmd/tap-new: fix root_url warning.
Ruby couldn't detect the `root_url` usage inside the ERB template.
Instead, use interpolation so it can for a fixed warning and more concise
syntax.
2025-05-21 13:19:11 +01:00
Mike McQuaid
a94037a6ff
dev-cmd/update-maintainers: various fixes.
- install the `man` gem group for `kramdown` so
  `Manpages.regenerate_man_pages` can run successfully
- hardcode the non-organisation PLC members so that they aren't
  missing from the GitHub team
- correctly populate the PLC members again
2025-05-21 13:08:37 +01:00
Mike McQuaid
e1c6513562
Merge pull request #19977 from colindean/patch-1
Prohibit non-ASCII characters in URLs, nudge toward punycode
2025-05-21 11:50:30 +00:00
Colin Dean
d5b3ae095c
Prohibit non-ASCII characters in URLs, nudge toward punycode
Inspired by curl's blog post, [Detecting malicious Unicode][1], this likely captures most if not all cases and nudges the user toward supplying IDNs with punycode.

A possible improvement would be telling the user exactly what punycode domain to use instead, but that may require another library as I can't quickly find something built into the Ruby stdlib that handles punycode encoding.

[1]: https://daniel.haxx.se/blog/2025/05/16/detecting-malicious-unicode/

Co-authored-by: Štefan Baebler <319826+stefanb@users.noreply.github.com>
2025-05-21 12:42:07 +01:00
Mike McQuaid
33a6d21eef
Merge pull request #19985 from Homebrew/dug/annotations
Include annotations in tapioca updates
2025-05-21 07:41:33 +00:00
Douglas Eichelberger
cd86e43fb1
Add rubocop exclusion 2025-05-20 20:59:24 -07:00
Douglas Eichelberger
1d4f1481ae
brew tc --update 2025-05-20 20:57:13 -07:00
Douglas Eichelberger
38bad25a86
Include annotations in typecheck updates 2025-05-20 20:56:53 -07:00
Patrick Linnane
cdf3964753
Merge pull request #19981 from Homebrew/dependabot/bundler/Library/Homebrew/ruby-lsp-0.23.21
build(deps-dev): bump ruby-lsp from 0.23.20 to 0.23.21 in /Library/Homebrew
2025-05-20 21:07:21 +00:00
Patrick Linnane
df306e1426
Merge pull request #19978 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-251ed9551b
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-20 21:07:05 +00:00
Patrick Linnane
c2abb473bf
Merge pull request #19980 from Homebrew/dependabot/pip/Library/Homebrew/formula-analytics/setuptools-80.8.0
build(deps): bump setuptools from 80.7.1 to 80.8.0 in /Library/Homebrew/formula-analytics
2025-05-20 21:06:45 +00:00
Patrick Linnane
436eec1923
Merge pull request #19979 from Homebrew/dependabot/pip/Library/Homebrew/formula-analytics/influxdb3-python-0.13.0
build(deps): bump influxdb3-python from 0.12.0 to 0.13.0 in /Library/Homebrew/formula-analytics
2025-05-20 21:06:31 +00:00
Patrick Linnane
ce7256b154
Merge branch 'master' into dependabot/bundler/Library/Homebrew/ruby-lsp-0.23.21 2025-05-20 13:49:54 -07:00
Patrick Linnane
8e58386539
Merge branch 'master' into dependabot/bundler/Library/Homebrew/sorbet-251ed9551b 2025-05-20 13:49:51 -07:00
Patrick Linnane
303e4e4784
Merge branch 'master' into dependabot/pip/Library/Homebrew/formula-analytics/setuptools-80.8.0 2025-05-20 13:49:48 -07:00
Patrick Linnane
fe91ec3dbb
Merge branch 'master' into dependabot/pip/Library/Homebrew/formula-analytics/influxdb3-python-0.13.0 2025-05-20 13:49:44 -07:00
Patrick Linnane
33284e2a00
Merge pull request #19982 from Homebrew/faq-link-fix
docs/FAQ: fix broken link
2025-05-20 20:40:08 +00:00
BrewTestBot
87e4dfcd9f
Update RBI files for ruby-lsp.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-20 19:41:32 +00:00
BrewTestBot
8b643d7acf
brew vendor-gems: commit updates. 2025-05-20 19:41:23 +00:00
BrewTestBot
c2fac2047d
brew vendor-gems: commit updates. 2025-05-20 19:41:14 +00:00
Patrick Linnane
c0f4e11370
docs/FAQ: fix broken link
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-05-20 12:37:49 -07:00
dependabot[bot]
8b22e8a95f
build(deps-dev): bump ruby-lsp in /Library/Homebrew
Bumps [ruby-lsp](https://github.com/Shopify/ruby-lsp) from 0.23.20 to 0.23.21.
- [Release notes](https://github.com/Shopify/ruby-lsp/releases)
- [Commits](https://github.com/Shopify/ruby-lsp/compare/v0.23.20...v0.23.21)

---
updated-dependencies:
- dependency-name: ruby-lsp
  dependency-version: 0.23.21
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 19:11:52 +00:00
dependabot[bot]
2decd2158d
build(deps): bump setuptools in /Library/Homebrew/formula-analytics
Bumps [setuptools](https://github.com/pypa/setuptools) from 80.7.1 to 80.8.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.7.1...v80.8.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.8.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 18:45:25 +00:00
dependabot[bot]
bfc36c00d8
build(deps): bump influxdb3-python
Bumps [influxdb3-python](https://github.com/InfluxCommunity/influxdb3-python) from 0.12.0 to 0.13.0.
- [Release notes](https://github.com/InfluxCommunity/influxdb3-python/releases)
- [Changelog](https://github.com/InfluxCommunity/influxdb3-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/InfluxCommunity/influxdb3-python/compare/v0.12.0...v0.13.0)

---
updated-dependencies:
- dependency-name: influxdb3-python
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 18:45:12 +00:00
dependabot[bot]
bdbd39bb09
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12115 to 0.5.12117
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 18:03:05 +00:00
Eric Knibbe
83249ef6ea
Merge pull request #19968 from Homebrew/docs-cask-cookbook
docs/Cask-Cookbook review
2025-05-20 14:40:53 +00:00
Eric Knibbe
d4c02e64e5
Cask-Cookbook: reorder some sections 2025-05-20 10:30:24 -04:00
Eric Knibbe
e8a0142150
Cask-Cookbook: review and update
with suggestions from code review

Co-Authored-By: Klaus Hipp <khipp@users.noreply.github.com>
Co-Authored-By: Bevan Kay <email@bevankay.me>
2025-05-20 10:30:24 -04:00
Eric Knibbe
2b25f34e85
Cask-Cookbook: mention replacement_formula/cask 2025-05-20 10:30:24 -04:00
Eric Knibbe
3320d7ee3e
Cask-Cookbook: mention version.csv methods 2025-05-20 10:30:24 -04:00
Eric Knibbe
ad5e03279b
Cask-Cookbook: relocate and update script: key lists 2025-05-20 10:30:24 -04:00
Carlo Cabrera
713289e2eb
Merge pull request #19885 from fidelity-contributions/github-16669
Anonymous OCI registry mirror support
2025-05-20 13:35:11 +00:00
Justin Rackliffe
f051510e67
Update Library/Homebrew/download_strategy.rb
Co-authored-by: Eric Knibbe <enk3@outlook.com>
2025-05-20 09:25:30 -04:00
Mike McQuaid
2bc642d501
Merge pull request #19976 from Homebrew/spdx_downcase
utils/spdx: do case insensitive comparison.
2025-05-20 12:59:06 +00:00
Mike McQuaid
8282ffa658
Merge pull request #19971 from Homebrew/bump-formula-pr-fix
bump-formula-pr: fix case when only `url` is provided
2025-05-20 11:40:18 +00:00
Bevan Kay
effb07ee76
bump-formula-pr: fix case when only url is provided 2025-05-20 21:23:52 +10:00
Mike McQuaid
7173f1fb60
utils/spdx: do case insensitive comparison.
Various places that use SPDX licenses specify them as downcased strings
so let's be more permissive in our comparisons/validations.
2025-05-20 12:12:55 +01:00
Mike McQuaid
28eab5c9a0
Merge pull request #19910 from botantony/no_autobump_extract_plist
cask/dsl: set `no_autobump!` automatically in some cases
2025-05-20 07:49:16 +00:00
Bevan Kay
14fbd47808
Merge pull request #19973 from Homebrew/livecheck/bitbucket-update-generated-urls
Bitbucket: update generated urls
2025-05-19 23:22:32 +00:00
Patrick Linnane
6a23486dd5
Merge pull request #19975 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-ab92e3fc5f
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-19 22:01:01 +00:00
Patrick Linnane
b371b6eb59
Merge pull request #19974 from Homebrew/dependabot/github_actions/ruby/setup-ruby-1.242.0
build(deps): bump ruby/setup-ruby from 1.240.0 to 1.242.0
2025-05-19 21:56:53 +00:00
BrewTestBot
a063889303
brew vendor-gems: commit updates. 2025-05-19 21:51:09 +00:00
dependabot[bot]
b554839ed9
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12109 to 0.5.12115
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 18:20:29 +00:00
dependabot[bot]
5f037232c7
build(deps): bump ruby/setup-ruby from 1.240.0 to 1.242.0
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.240.0 to 1.242.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](1a0ff446f5...cb0fda56a3)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.242.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 18:19:44 +00:00
Sam Ford
95abc7360b
Bitbucket: update generated urls
The `Bitbucket` strategy checks download or tag pages but the content
is now fetched separately on page load, so the strategy is failing for
all related formulae. This updates the generated strategy URLs to
fetch the page content instead, which works as expected.
2025-05-19 12:13:49 -04:00
botantony
92832c258c
dev-cmd/create: add --cabal switch
Signed-off-by: botantony <antonsm21@gmail.com>
2025-05-18 20:18:34 +02:00
Patrick Linnane
69667974bc
Merge pull request #19967 from Homebrew/sponsors-maintainers-man-completions
sponsors maintainers man completions
2025-05-17 16:29:44 +00:00
BrewTestBot
efc91b27fb
Update manpage and completions.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-05-17 16:19:58 +00:00
BrewTestBot
c75d06881a
Update sponsors.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2025-05-17 16:19:43 +00:00
Patrick Linnane
1cfc303969
Merge pull request #19960 from Homebrew/dependabot/github_actions/ruby/setup-ruby-1.240.0
build(deps): bump ruby/setup-ruby from 1.239.0 to 1.240.0
2025-05-16 15:40:31 +00:00
Patrick Linnane
7ce8b5a4ca
Merge pull request #19964 from Homebrew/dependabot/bundler/Library/Homebrew/vernier-1.7.1
build(deps-dev): bump vernier from 1.7.0 to 1.7.1 in /Library/Homebrew
2025-05-16 15:03:01 +00:00
Patrick Linnane
a760645936
Merge pull request #19952 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-8edb7b57e8
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-16 15:00:29 +00:00
Patrick Linnane
bd232b1e65
Merge pull request #19962 from Homebrew/dependabot/github_actions/docker/build-push-action-6.17.0
build(deps): bump docker/build-push-action from 6.16.0 to 6.17.0
2025-05-16 14:58:59 +00:00
Patrick Linnane
cf26ec1b3d
Merge pull request #19963 from Homebrew/dependabot/github_actions/github/codeql-action-3.28.18
build(deps): bump github/codeql-action from 3.28.17 to 3.28.18
2025-05-16 14:57:12 +00:00
Patrick Linnane
3f69fabbf0
Merge pull request #19961 from Homebrew/dependabot/github_actions/codecov/codecov-action-5.4.3
build(deps): bump codecov/codecov-action from 5.4.2 to 5.4.3
2025-05-16 14:55:41 +00:00
BrewTestBot
2358748321
Update RBI files for vernier.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-16 14:53:30 +00:00
BrewTestBot
a2f86b685d
brew vendor-gems: commit updates. 2025-05-16 14:53:24 +00:00
BrewTestBot
98ad7e3aa3
brew vendor-gems: commit updates. 2025-05-16 14:50:17 +00:00
dependabot[bot]
f53c125c0c
build(deps-dev): bump vernier from 1.7.0 to 1.7.1 in /Library/Homebrew
Bumps [vernier](https://github.com/jhawthorn/vernier) from 1.7.0 to 1.7.1.
- [Release notes](https://github.com/jhawthorn/vernier/releases)
- [Commits](https://github.com/jhawthorn/vernier/compare/v1.7.0...v1.7.1)

---
updated-dependencies:
- dependency-name: vernier
  dependency-version: 1.7.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 14:48:21 +00:00
dependabot[bot]
1dc2e07c3d
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12087 to 0.5.12104
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 14:47:47 +00:00
dependabot[bot]
e271c89ee9
build(deps): bump github/codeql-action from 3.28.17 to 3.28.18
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.17 to 3.28.18.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](60168efe1c...ff0a06e83c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 14:46:52 +00:00
dependabot[bot]
19d20a740a
build(deps): bump docker/build-push-action from 6.16.0 to 6.17.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](14487ce63c...1dc7386353)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 14:46:44 +00:00
dependabot[bot]
2723620d85
build(deps): bump codecov/codecov-action from 5.4.2 to 5.4.3
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.4.2 to 5.4.3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](ad3126e916...18283e04ce)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 14:46:40 +00:00
dependabot[bot]
85aed4c430
build(deps): bump ruby/setup-ruby from 1.239.0 to 1.240.0
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.239.0 to 1.240.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](84684c07c1...1a0ff446f5)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.240.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 14:46:36 +00:00
Eric Knibbe
888dd7992e
Merge pull request #19958 from Homebrew/deprecating-disabling-review
docs/Deprecating-Disabling-* review
2025-05-16 14:13:22 +00:00
Eric Knibbe
d227f494ed
docs/Deprecating-Disabling-* review 2025-05-16 01:13:33 -04:00
Patrick Linnane
e4e75f5474
Merge pull request #19955 from Homebrew/dependabot/bundler/Library/Homebrew/ruby-lsp-0.23.20
build(deps-dev): bump ruby-lsp from 0.23.19 to 0.23.20 in /Library/Homebrew
2025-05-15 23:14:28 +00:00
BrewTestBot
ce0ef75e33
Update RBI files for ruby-lsp.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-15 23:05:18 +00:00
BrewTestBot
12882a2942
brew vendor-gems: commit updates. 2025-05-15 23:05:09 +00:00
dependabot[bot]
e9edb7da20
build(deps-dev): bump ruby-lsp in /Library/Homebrew
Bumps [ruby-lsp](https://github.com/Shopify/ruby-lsp) from 0.23.19 to 0.23.20.
- [Release notes](https://github.com/Shopify/ruby-lsp/releases)
- [Commits](https://github.com/Shopify/ruby-lsp/compare/v0.23.19...v0.23.20)

---
updated-dependencies:
- dependency-name: ruby-lsp
  dependency-version: 0.23.20
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 22:51:46 +00:00
Patrick Linnane
736517cbdb
Merge pull request #19954 from Homebrew/dependabot/bundler/Library/Homebrew/rbs-3.9.4
build(deps-dev): bump rbs from 3.9.3 to 3.9.4 in /Library/Homebrew
2025-05-15 21:35:51 +00:00
Patrick Linnane
b1ec1e908b
Merge pull request #19953 from Homebrew/dependabot/bundler/Library/Homebrew/rubocop-1.75.6
build(deps-dev): bump rubocop from 1.75.5 to 1.75.6 in /Library/Homebrew
2025-05-15 21:35:42 +00:00
BrewTestBot
b58b8d5d77
Update RBI files for rubocop.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-15 21:25:24 +00:00
BrewTestBot
9a7835c9fd
Update RBI files for rbs.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-15 21:25:18 +00:00
BrewTestBot
00aed74cf0
brew vendor-gems: commit updates. 2025-05-15 21:25:09 +00:00
BrewTestBot
aea920b3bb
brew vendor-gems: commit updates. 2025-05-15 21:25:01 +00:00
Patrick Linnane
f1552bf3ec
Merge pull request #19956 from Homebrew/dependabot/pip/Library/Homebrew/formula-analytics/setuptools-80.7.1
build(deps): bump setuptools from 80.4.0 to 80.7.1 in /Library/Homebrew/formula-analytics
2025-05-15 21:23:24 +00:00
dependabot[bot]
ba9984cfd0
build(deps): bump setuptools in /Library/Homebrew/formula-analytics
Bumps [setuptools](https://github.com/pypa/setuptools) from 80.4.0 to 80.7.1.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.4.0...v80.7.1)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.7.1
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 18:28:13 +00:00
dependabot[bot]
91aa9a4856
build(deps-dev): bump rbs from 3.9.3 to 3.9.4 in /Library/Homebrew
Bumps [rbs](https://github.com/ruby/rbs) from 3.9.3 to 3.9.4.
- [Release notes](https://github.com/ruby/rbs/releases)
- [Changelog](https://github.com/ruby/rbs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ruby/rbs/compare/v3.9.3...v3.9.4)

---
updated-dependencies:
- dependency-name: rbs
  dependency-version: 3.9.4
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 18:06:31 +00:00
dependabot[bot]
a2b91764cf
build(deps-dev): bump rubocop from 1.75.5 to 1.75.6 in /Library/Homebrew
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.75.5 to 1.75.6.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.75.5...v1.75.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 18:05:51 +00:00
Eric Knibbe
bdf738ef10
Merge pull request #19943 from Homebrew/list-cask-versions
cmd/list: skip invalid Caskroom files
2025-05-15 16:01:57 +00:00
Eric Knibbe
28b1b74607
cmd/list: skip invalid Caskroom files 2025-05-15 11:48:36 -04:00
Eric Knibbe
ef314d9435
Merge pull request #19950 from Homebrew/generate-api-macos-latest
dev-cmd/generate-*-api: simulate latest macOS
2025-05-15 15:26:58 +00:00
Eric Knibbe
2b8d104281
dev-cmd/generate-*-api: simulate latest macOS 2025-05-15 11:06:24 -04:00
Sean Molenaar
107120e4d8
Merge pull request #19880 from Moisan/audit_bitbucket_patch
patches audit: bitbucket patches should use api
2025-05-15 12:45:30 +00:00
Patrick Linnane
32366b7e01
Merge pull request #19949 from Homebrew/portable-ruby-3.4.4
Portable Ruby 3.4.4
2025-05-15 00:25:14 +00:00
Patrick Linnane
63bc6477b5
Portable Ruby 3.4.4
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-05-14 17:13:58 -07:00
Patrick Linnane
e354d6f07f
Merge pull request #19948 from Homebrew/dependabot/github_actions/ruby/setup-ruby-1.239.0
build(deps): bump ruby/setup-ruby from 1.238.0 to 1.239.0
2025-05-15 00:03:32 +00:00
Patrick Linnane
19c4d129a5
How-To-Organize-AGM: update link
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-05-14 16:54:09 -07:00
dependabot[bot]
c5fd8e586f
build(deps): bump ruby/setup-ruby from 1.238.0 to 1.239.0
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.238.0 to 1.239.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](e34163cd15...84684c07c1)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.239.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-14 23:47:01 +00:00
Sean Molenaar
ca911fb446
feat: allow env for write_jar_script 2025-05-14 11:56:31 +02:00
Carlo Cabrera
1399d2e98a
Merge pull request #19941 from Homebrew/revert-19818-fix-trash
Revert "cask/artifact/abstract_uninstall: fix `trash_paths`"
2025-05-14 02:06:41 +00:00
Patrick Linnane
13d9d9803f
Merge pull request #19942 from Homebrew/dependabot/bundler/Library/Homebrew/ruby-lsp-0.23.19
build(deps-dev): bump ruby-lsp from 0.23.17 to 0.23.19 in /Library/Homebrew
2025-05-13 20:17:52 +00:00
Patrick Linnane
7bd41e7c19
Merge pull request #19944 from xty/fedora
docs/Homebrew-on-Linux: update instructions for Fedora-based distros
2025-05-13 20:07:43 +00:00
BrewTestBot
5b6dbafb4c
Update RBI files for ruby-lsp.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-13 20:06:51 +00:00
BrewTestBot
a6fa333524
brew vendor-gems: commit updates. 2025-05-13 20:06:41 +00:00
dependabot[bot]
dafc62904e
build(deps-dev): bump ruby-lsp in /Library/Homebrew
Bumps [ruby-lsp](https://github.com/Shopify/ruby-lsp) from 0.23.17 to 0.23.19.
- [Release notes](https://github.com/Shopify/ruby-lsp/releases)
- [Commits](https://github.com/Shopify/ruby-lsp/compare/v0.23.17...v0.23.19)

---
updated-dependencies:
- dependency-name: ruby-lsp
  dependency-version: 0.23.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-13 18:07:44 +00:00
XTY
f39cb527fd
docs/Homebrew-on-Linux: update instructions for Fedora-based distros 2025-05-14 02:02:34 +08:00
Carlo Cabrera
7cd1972f39
Revert "cask/artifact/abstract_uninstall: fix trash_paths" 2025-05-14 01:39:47 +08:00
Bo Anderson
17de33e9ef
Merge pull request #19938 from Homebrew/cgi
Phase out using `cgi` library
2025-05-13 00:48:27 +00:00
Bo Anderson
923be69785
Phase out using cgi library 2025-05-13 01:33:14 +01:00
Patrick Linnane
75a5f03f75
Merge pull request #19937 from Homebrew/dependabot/github_actions/ruby/setup-ruby-1.238.0
build(deps): bump ruby/setup-ruby from 1.237.0 to 1.238.0
2025-05-12 21:42:49 +00:00
Patrick Linnane
088bd26f5d
Merge pull request #19933 from Homebrew/dependabot/bundler/Library/Homebrew/language_server-protocol-3.17.0.5
build(deps-dev): bump language_server-protocol from 3.17.0.4 to 3.17.0.5 in /Library/Homebrew
2025-05-12 21:38:16 +00:00
Patrick Linnane
0461237c03
Merge pull request #19934 from Homebrew/dependabot/bundler/Library/Homebrew/diff-lcs-1.6.2
build(deps-dev): bump diff-lcs from 1.6.1 to 1.6.2 in /Library/Homebrew
2025-05-12 21:37:41 +00:00
Patrick Linnane
47a2497202
Merge pull request #19935 from Homebrew/dependabot/bundler/Library/Homebrew/json-2.12.0
build(deps-dev): bump json from 2.11.3 to 2.12.0 in /Library/Homebrew
2025-05-12 21:36:31 +00:00
Patrick Linnane
e08aa7dd02
Merge pull request #19932 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-db92abd70b
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-12 21:36:20 +00:00
BrewTestBot
892d408f58
brew vendor-gems: commit updates. 2025-05-12 21:27:11 +00:00
BrewTestBot
241f74a797
brew vendor-gems: commit updates. 2025-05-12 21:27:03 +00:00
BrewTestBot
2d188a3071
brew vendor-gems: commit updates. 2025-05-12 21:26:46 +00:00
Patrick Linnane
9272ac9668
Merge pull request #19936 from Homebrew/dependabot/pip/Library/Homebrew/formula-analytics/setuptools-80.4.0
build(deps): bump setuptools from 80.3.1 to 80.4.0 in /Library/Homebrew/formula-analytics
2025-05-12 21:26:41 +00:00
BrewTestBot
ef9751b040
brew vendor-gems: commit updates. 2025-05-12 21:26:24 +00:00
dependabot[bot]
d7010dce07
build(deps): bump ruby/setup-ruby from 1.237.0 to 1.238.0
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.237.0 to 1.238.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](eaecf785f6...e34163cd15)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.238.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 18:44:25 +00:00
dependabot[bot]
9686d7063c
build(deps): bump setuptools in /Library/Homebrew/formula-analytics
Bumps [setuptools](https://github.com/pypa/setuptools) from 80.3.1 to 80.4.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.3.1...v80.4.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.4.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 18:31:31 +00:00
dependabot[bot]
68443f61a8
build(deps-dev): bump json from 2.11.3 to 2.12.0 in /Library/Homebrew
Bumps [json](https://github.com/ruby/json) from 2.11.3 to 2.12.0.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/json/compare/v2.11.3...v2.12.0)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.12.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 18:25:51 +00:00
dependabot[bot]
0b4e885434
build(deps-dev): bump diff-lcs from 1.6.1 to 1.6.2 in /Library/Homebrew
Bumps [diff-lcs](https://github.com/halostatue/diff-lcs) from 1.6.1 to 1.6.2.
- [Changelog](https://github.com/halostatue/diff-lcs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/halostatue/diff-lcs/compare/v1.6.1...v1.6.2)

---
updated-dependencies:
- dependency-name: diff-lcs
  dependency-version: 1.6.2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 18:25:43 +00:00
dependabot[bot]
ed913ae061
build(deps-dev): bump language_server-protocol in /Library/Homebrew
Bumps [language_server-protocol](https://github.com/mtsmfm/language_server-protocol-ruby) from 3.17.0.4 to 3.17.0.5.
- [Changelog](https://github.com/mtsmfm/language_server-protocol-ruby/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mtsmfm/language_server-protocol-ruby/compare/v3.17.0.4...v3.17.0.5)

---
updated-dependencies:
- dependency-name: language_server-protocol
  dependency-version: 3.17.0.5
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 18:25:23 +00:00
dependabot[bot]
8b6183c7db
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12083 to 0.5.12087
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 18:24:55 +00:00
Patrick Linnane
c9f58f83a4
Merge pull request #19931 from Homebrew/sorbet-files-update
sorbet: Update RBI files.
2025-05-11 01:35:51 +00:00
BrewTestBot
c25244a0f2
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/master/.github/workflows/sorbet.yml) workflow.
2025-05-11 00:31:11 +00:00
Eric Knibbe
b0c5f613b9
Merge pull request #19929 from Homebrew/cask-shell-completions
cask: document shell completion stanzas
2025-05-10 17:17:43 +00:00
Bo Anderson
bb33840924
Merge pull request #19930 from Homebrew/dug-cmd-disabled-wording
Improve readability of disabled command message
2025-05-10 17:02:33 +00:00
Douglas Eichelberger
8253e89eea
Improve readability of disabled command message 2025-05-10 09:23:34 -07:00
Patrick Linnane
c089d8b9da
Merge pull request #19924 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-6fd83145b1
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-10 00:23:04 +00:00
BrewTestBot
bf0e09c847
brew vendor-gems: commit updates. 2025-05-10 00:10:59 +00:00
dependabot[bot]
0ceeb934d5
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12079 to 0.5.12083
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-10 00:09:02 +00:00
Patrick Linnane
40c31c69f6
Merge pull request #19928 from Homebrew/dependabot/bundler/Library/Homebrew/spoom-1.6.3
build(deps-dev): bump spoom from 1.6.2 to 1.6.3 in /Library/Homebrew
2025-05-09 21:39:46 +00:00
BrewTestBot
4c393ffe40
Update RBI files for spoom.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-09 21:28:37 +00:00
BrewTestBot
59296b855f
brew vendor-gems: commit updates. 2025-05-09 21:28:29 +00:00
dependabot[bot]
5b68c3d6b6
build(deps-dev): bump spoom from 1.6.2 to 1.6.3 in /Library/Homebrew
Bumps [spoom](https://github.com/Shopify/spoom) from 1.6.2 to 1.6.3.
- [Release notes](https://github.com/Shopify/spoom/releases)
- [Commits](https://github.com/Shopify/spoom/compare/v1.6.2...v1.6.3)

---
updated-dependencies:
- dependency-name: spoom
  dependency-version: 1.6.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-09 21:22:29 +00:00
Patrick Linnane
9b94404891
Merge pull request #19926 from Homebrew/dependabot/bundler/Library/Homebrew/rbi-0.3.3
build(deps-dev): bump rbi from 0.3.2 to 0.3.3 in /Library/Homebrew
2025-05-09 20:59:55 +00:00
BrewTestBot
f4c6dd282d
Update RBI files for rbi.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-09 20:48:54 +00:00
BrewTestBot
b8639a5f48
brew vendor-gems: commit updates. 2025-05-09 20:48:46 +00:00
dependabot[bot]
58004e6ffb
build(deps-dev): bump rbi from 0.3.2 to 0.3.3 in /Library/Homebrew
Bumps [rbi](https://github.com/Shopify/rbi) from 0.3.2 to 0.3.3.
- [Release notes](https://github.com/Shopify/rbi/releases)
- [Commits](https://github.com/Shopify/rbi/compare/v0.3.2...v0.3.3)

---
updated-dependencies:
- dependency-name: rbi
  dependency-version: 0.3.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-09 20:45:49 +00:00
Patrick Linnane
e402ad336e
Merge pull request #19925 from Homebrew/dependabot/bundler/Library/Homebrew/parallel_tests-5.2.0
build(deps-dev): bump parallel_tests from 5.1.0 to 5.2.0 in /Library/Homebrew
2025-05-09 20:16:51 +00:00
Patrick Linnane
9fa7da4db8
Merge pull request #19927 from Homebrew/dependabot/bundler/Library/Homebrew/rbs-3.9.3
build(deps-dev): bump rbs from 3.9.2 to 3.9.3 in /Library/Homebrew
2025-05-09 20:15:59 +00:00
BrewTestBot
af6de739ca
Update RBI files for parallel_tests.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-09 18:59:32 +00:00
BrewTestBot
f4bc811a1c
brew vendor-gems: commit updates. 2025-05-09 18:59:25 +00:00
BrewTestBot
becc36a6da
Update RBI files for rbs.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-09 18:58:53 +00:00
BrewTestBot
ea8cc264b2
brew vendor-gems: commit updates. 2025-05-09 18:58:44 +00:00
Eric Knibbe
0838ceda90
cask: document shell completion stanzas
Also, allow them to be given a `target:` parameter.
2025-05-09 14:47:26 -04:00
dependabot[bot]
b30a0c69b5
build(deps-dev): bump rbs from 3.9.2 to 3.9.3 in /Library/Homebrew
Bumps [rbs](https://github.com/ruby/rbs) from 3.9.2 to 3.9.3.
- [Release notes](https://github.com/ruby/rbs/releases)
- [Changelog](https://github.com/ruby/rbs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ruby/rbs/compare/v3.9.2...v3.9.3)

---
updated-dependencies:
- dependency-name: rbs
  dependency-version: 3.9.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-09 18:08:31 +00:00
dependabot[bot]
5e931071f8
build(deps-dev): bump parallel_tests in /Library/Homebrew
Bumps [parallel_tests](https://github.com/grosser/parallel_tests) from 5.1.0 to 5.2.0.
- [Changelog](https://github.com/grosser/parallel_tests/blob/master/CHANGELOG.md)
- [Commits](https://github.com/grosser/parallel_tests/compare/v5.1.0...v5.2.0)

---
updated-dependencies:
- dependency-name: parallel_tests
  dependency-version: 5.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-09 18:07:57 +00:00
Mike McQuaid
a4cf69f261
Merge pull request #19923 from botantony/autobump
tap: get autobump list from `autobump.txt` file
2025-05-09 15:01:24 +00:00
botantony
56d91aaf28
tap: get autobump list from autobump.txt file
Signed-off-by: botantony <antonsm21@gmail.com>
2025-05-09 15:32:30 +02:00
Mike McQuaid
6f39076b3c
Merge pull request #19922 from Homebrew/brew_bundle_add_create
bundle/adder: create Brewfile if it doesn't exist.
2025-05-09 12:53:12 +00:00
Mike McQuaid
ef4bea60a4
bundle/adder: create Brewfile if it doesn't exist.
This provides a nicer interface into using `brew bundle add` as a first
command.
2025-05-09 12:58:06 +01:00
Mike McQuaid
bfce68a6be
Merge pull request #19921 from Homebrew/cask_args-combine
bundle/dsl: combine cask_args calls
2025-05-09 11:21:00 +00:00
Bo Anderson
288984bb0f
bundle/dsl: combine cask_args calls 2025-05-09 08:06:06 +01:00
Patrick Linnane
0be3fbdea7
Merge pull request #19917 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-2ba6a5281d
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-09 04:52:06 +00:00
Bo Anderson
c325ec2826
Merge pull request #19916 from scpeters/fix_brew_prof
dev-cmd/prof: require fileutils
2025-05-09 02:17:52 +00:00
BrewTestBot
3fe3f1f640
brew vendor-gems: commit updates. 2025-05-09 02:11:11 +00:00
Bevan Kay
4312f3a729
Merge pull request #19918 from Homebrew/cask-upgrade-ask
cmd/upgrade: only ask about cask upgrade with `--ask`
2025-05-09 01:20:36 +00:00
Bevan Kay
1c138a613b
cmd/upgrade: only ask about cask upgrade with --ask 2025-05-09 09:42:15 +10:00
Steve Peters
3dd87e6d17 dev-cmd/prof: require fileutils
Fixes error when running `brew prof`:
uninitialized constant Homebrew::DevCmd::Prof::FileUtils
2025-05-08 13:41:11 -07:00
dependabot[bot]
cc4a1cf0ae
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12070 to 0.5.12079
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 18:04:55 +00:00
Mike McQuaid
c1d29f65a5
Merge pull request #19892 from tyuwags/master
`brew install--ask` for casks
2025-05-08 10:45:19 +00:00
Mike McQuaid
9ee2239f2c
Merge pull request #19915 from Homebrew/SMillerDev-patch-1
fix: make the "Open Pull Request" doc less daunting
2025-05-08 10:42:14 +00:00
Sean Molenaar
aa66185489
fix: make the "Open Pull Request" doc less daunting 2025-05-08 09:48:54 +02:00
Patrick Linnane
dda1befb79
Merge pull request #19912 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-8f3468f80a
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-08 02:46:49 +00:00
BrewTestBot
6b24243171
brew vendor-gems: commit updates. 2025-05-08 02:35:53 +00:00
dependabot[bot]
de3a9fcb47
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12067 to 0.5.12070
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 02:31:39 +00:00
Ruoyu Zhong
b94a6de0cd
Merge pull request #19914 from Homebrew/sorbet-files-update
sorbet: Update RBI files.
2025-05-08 01:12:42 +00:00
BrewTestBot
96230004ff
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/master/.github/workflows/sorbet.yml) workflow.
2025-05-08 00:29:01 +00:00
Eric Knibbe
49b1d4b4b1
Merge pull request #19913 from Homebrew/dependabot/bundler/Library/Homebrew/spoom-1.6.2
build(deps-dev): bump spoom from 1.6.1 to 1.6.2 in /Library/Homebrew
2025-05-07 20:06:29 +00:00
dependabot[bot]
f62b5b6034
build(deps-dev): bump spoom from 1.6.1 to 1.6.2 in /Library/Homebrew
Bumps [spoom](https://github.com/Shopify/spoom) from 1.6.1 to 1.6.2.
- [Release notes](https://github.com/Shopify/spoom/releases)
- [Commits](https://github.com/Shopify/spoom/compare/v1.6.1...v1.6.2)

---
updated-dependencies:
- dependency-name: spoom
  dependency-version: 1.6.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 18:06:08 +00:00
Thibaut Hérault
3799c4b77d
Merge branch 'master' into master 2025-05-07 12:52:16 -04:00
thibhero
76e7a13332 applying brew tests, typecheck, style 2025-05-07 12:29:32 -04:00
thibhero
499a9b9dae changing to installed_formulae, as its checked if it should be installed 2025-05-07 12:08:46 -04:00
thibhero
f875dbc8a7 Implementing ask input with casks
renamed `ask` to `ask_formulae`
moving option `--ask` to work with formulae and casks
2025-05-07 12:07:29 -04:00
botantony
6cea5ef4f0
cask/dsl: exclude from autobump if version is :latest
Signed-off-by: botantony <antonsm21@gmail.com>
2025-05-07 17:25:58 +02:00
botantony
4373aad153
cask/dsl: set no_autobump! if :extract_plist livecheck strategy is used
Signed-off-by: botantony <antonsm21@gmail.com>
2025-05-07 14:07:36 +02:00
Ruoyu Zhong
e5308b0245
Merge pull request #19908 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-4a9ad18406
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-06 19:40:09 +00:00
Ruoyu Zhong
eeda784f83
Merge pull request #19909 from Homebrew/dependabot/bundler/Library/Homebrew/ruby-lsp-0.23.17
build(deps-dev): bump ruby-lsp from 0.23.16 to 0.23.17 in /Library/Homebrew
2025-05-06 19:38:49 +00:00
Ruoyu Zhong
7493fd4dd4
Merge pull request #19907 from Homebrew/dependabot/bundler/Library/Homebrew/rspec-155a31644a
build(deps-dev): bump rspec-mocks from 3.13.3 to 3.13.4 in /Library/Homebrew in the rspec group
2025-05-06 19:37:35 +00:00
BrewTestBot
ad72748cb9
Update RBI files for ruby-lsp.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-06 19:28:03 +00:00
BrewTestBot
664798afea
brew vendor-gems: commit updates. 2025-05-06 19:27:54 +00:00
BrewTestBot
2867da98b9
brew vendor-gems: commit updates. 2025-05-06 19:27:52 +00:00
BrewTestBot
dffe01a859
brew vendor-gems: commit updates. 2025-05-06 19:27:48 +00:00
dependabot[bot]
f800e211bc
build(deps-dev): bump ruby-lsp in /Library/Homebrew
Bumps [ruby-lsp](https://github.com/Shopify/ruby-lsp) from 0.23.16 to 0.23.17.
- [Release notes](https://github.com/Shopify/ruby-lsp/releases)
- [Commits](https://github.com/Shopify/ruby-lsp/compare/v0.23.16...v0.23.17)

---
updated-dependencies:
- dependency-name: ruby-lsp
  dependency-version: 0.23.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 18:48:37 +00:00
dependabot[bot]
b2c8706ea1
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12060 to 0.5.12067
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 18:48:05 +00:00
dependabot[bot]
c02d788517
build(deps-dev): bump rspec-mocks
Bumps the rspec group in /Library/Homebrew with 1 update: [rspec-mocks](https://github.com/rspec/rspec).


Updates `rspec-mocks` from 3.13.3 to 3.13.4
- [Changelog](https://github.com/rspec/rspec/blob/rspec-mocks-v3.13.4/rspec-mocks/Changelog.md)
- [Commits](https://github.com/rspec/rspec/compare/rspec-mocks-v3.13.3...rspec-mocks-v3.13.4)

---
updated-dependencies:
- dependency-name: rspec-mocks
  dependency-version: 3.13.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rspec
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 18:47:34 +00:00
Mike McQuaid
bad6554dbb
Merge pull request #19902 from Homebrew/utils_github_pr_error
utils/github: improve PR creation error message.
2025-05-06 12:53:05 +00:00
Mike McQuaid
97468c014c
Merge pull request #19905 from Homebrew/brew_services_root_bootsnap
brew.sh: don't run `sudo brew services` with Bootsnap.
2025-05-06 10:28:10 +00:00
Mike McQuaid
5bfa27aa79
brew.sh: don't run sudo brew services with Bootsnap.
This is necessary to avoid permission errors.
2025-05-06 11:16:46 +01:00
Mike McQuaid
faf27ae35f
utils/github: improve PR creation error message.
This may help with debugging why this has failed.
2025-05-06 10:11:10 +01:00
Patrick Linnane
541d8879c4
Merge pull request #19900 from Homebrew/dependabot/bundler/Library/Homebrew/rubocop-1.75.5
build(deps-dev): bump rubocop from 1.75.2 to 1.75.5 in /Library/Homebrew
2025-05-06 03:59:42 +00:00
Patrick Linnane
6169cd526c
Merge branch 'master' into dependabot/bundler/Library/Homebrew/rubocop-1.75.5 2025-05-05 15:18:06 -07:00
Patrick Linnane
c6a2fa335d
brew style --fix 2025-05-05 14:35:08 -07:00
Patrick Linnane
2af5eab36d
Merge pull request #19899 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-710de7e78e
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-05 21:25:39 +00:00
Patrick Linnane
e3e1b43f3a
Merge pull request #19901 from Homebrew/dependabot/pip/Library/Homebrew/formula-analytics/setuptools-80.3.1
build(deps): bump setuptools from 80.1.0 to 80.3.1 in /Library/Homebrew/formula-analytics
2025-05-05 21:25:19 +00:00
Patrick Linnane
7f6d6e01fb
Merge pull request #19898 from Homebrew/dependabot/github_actions/actions/create-github-app-token-2.0.6
build(deps): bump actions/create-github-app-token from 2.0.3 to 2.0.6
2025-05-05 21:24:59 +00:00
Patrick Linnane
f77ff1db1e
Merge pull request #19897 from Homebrew/dependabot/github_actions/github/codeql-action-3.28.17
build(deps): bump github/codeql-action from 3.28.16 to 3.28.17
2025-05-05 21:24:52 +00:00
BrewTestBot
75e184049c
Update RBI files for rubocop.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-05 20:35:59 +00:00
BrewTestBot
409c79a9c0
brew vendor-gems: commit updates. 2025-05-05 20:35:36 +00:00
BrewTestBot
0b8e8b3bb0
brew vendor-gems: commit updates. 2025-05-05 20:35:30 +00:00
dependabot[bot]
64f49828d9
build(deps): bump setuptools in /Library/Homebrew/formula-analytics
Bumps [setuptools](https://github.com/pypa/setuptools) from 80.1.0 to 80.3.1.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.1.0...v80.3.1)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.3.1
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 18:56:28 +00:00
dependabot[bot]
26d31f2f32
build(deps-dev): bump rubocop from 1.75.2 to 1.75.5 in /Library/Homebrew
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.75.2 to 1.75.5.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.75.2...v1.75.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 18:50:47 +00:00
dependabot[bot]
9b12f7c25d
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12053 to 0.5.12060
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 18:47:42 +00:00
dependabot[bot]
bc2808310a
build(deps): bump actions/create-github-app-token from 2.0.3 to 2.0.6
Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.0.3 to 2.0.6.
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Commits](30bf6253fa...df432ceedc)

---
updated-dependencies:
- dependency-name: actions/create-github-app-token
  dependency-version: 2.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 18:33:58 +00:00
dependabot[bot]
cab19e06cb
build(deps): bump github/codeql-action from 3.28.16 to 3.28.17
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.16 to 3.28.17.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](28deaeda66...60168efe1c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 18:33:47 +00:00
Patrick Linnane
d301f5ff7e
Merge pull request #19895 from alex391/remove-refrence-to-force-auto-update-from-docs
Remove the sentence referencing --force-auto-update from the documentation
2025-05-05 17:03:09 +00:00
Alex Leute
1add568a6f
Remove the sentence referencing --force-auto-update
Because it was removed in 9ac3182
2025-05-04 23:49:02 -04:00
Bo Anderson
7617ac135f
Merge pull request #19888 from Homebrew/remove-es-kibana-refs
formula_auditor: remove elasticsearch and kibana refs
2025-05-04 04:38:15 +00:00
Bo Anderson
1dc5f5c55c
Merge pull request #19889 from Homebrew/update-eol_data
Update eol_data for API changes
2025-05-04 04:37:50 +00:00
Sam Ford
69dcbacb71
shared_audits: prevent duplicate eol_data fetches
The `eol_data` method uses `@eol_data["#{product}/#{cycle}"] ||=`,
which can unncessarily allow a duplicate API call if the same
product/cycle combination was previously tried but returned a 404
(Not Found) response. In this scenario, the value would be `nil` but
the existing logic doesn't check whether this is a missing key or a
`nil` value. If the key is present, we shouldn't make the same
request again.

This updates the method to return the existing value if the key
exists, which effectively prevents duplicate fetches. This new logic
only modifies `@eol_data` if `curl` is successful, so it does allow
the request to be made again if it failed before.

That said, this shouldn't normally be an issue and this is mostly
about refactoring the method to allow for nicer code organization.
This approach reduces the `begin` block to only the `JSON.parse` call,
which allows us to use `return unless result.status.success?` (this
previously led to a RuboCop offense because it was called within a
`begin` block).
2025-05-03 21:15:11 -04:00
Sam Ford
53c0780d85
shared_audits_spec: guard against nil value
The return value from `eol_data` can be `nil`, so we should use a
safe navigation operator before `#dig`.
2025-05-03 20:49:53 -04:00
Sam Ford
98b919f672
shared_audits_spec: use generic JSON values
This updates `eol_json_text` to use generic values (instead of values
from nodejs) and to omit some unused fields.
2025-05-03 20:48:20 -04:00
thibhero
5013c17474 formatting correctly with brew style 2025-05-03 15:39:43 -04:00
thibhero
fd97539b9e Merge remote-tracking branch 'tyuwags/master' 2025-05-03 15:24:27 -04:00
thibhero
96ca8d2e07 displaying a warning if ask is used with casks 2025-05-03 15:23:42 -04:00
thibhero
1416da262b returning if formulae is empty 2025-05-03 15:23:20 -04:00
Daeho Ro
2493be79cc
utils/shared_audits: add eol_data test 2025-05-04 02:10:08 +09:00
Sam Ford
85684f43bd
Update eol_data for API changes
The endoflife.date API has been updated, so this modifies the URL in
`SharedAudits.eol_data` to use the up to date URL and modifies the
related logic in `FormulaAuditor.audit_eol` to work with the new
response format. Specifically, there is now an `isEol` boolean value
and the EOL date is found in `eolFrom`.

One wrinkle of the new setup is that 404 responses now return HTML
content even if the request includes an `Accept: application/json`
header. This handles these types of responses by catching
`JSON::ParserError` but ideally we would parse the response headers
and use `Utils::Curl.http_status_ok?` to check for a good response
status before trying to parse the response body as JSON.
2025-05-03 12:26:54 -04:00
Rui Chen
9c2ac58709
formula_auditor: remove elasticsearch and kibana refs
Signed-off-by: Rui Chen <rui@chenrui.dev>
2025-05-03 10:58:13 -04:00
Patrick Linnane
97f9837a13
Merge pull request #19886 from botantony/no_autobump
autobump_constants: add `bumped_by_upstream` reason
2025-05-03 03:35:49 +00:00
botantony
fa26976b1d
autobump_constants: add bumped_by_upstream reason
Signed-off-by: botantony <antonsm21@gmail.com>
2025-05-03 02:00:37 +02:00
Justin Rackliffe
efa2786732 Resolving CI style errors with whitespace that are not flagged using stle locally 2025-05-02 15:00:22 -04:00
Patrick Linnane
01ffa85e9d
Merge pull request #19884 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-3af9ea9185
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-02 18:17:32 +00:00
BrewTestBot
4d7201f12d
brew vendor-gems: commit updates. 2025-05-02 18:07:23 +00:00
dependabot[bot]
ac48cc893f
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12048 to 0.5.12053
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 18:02:52 +00:00
Mike McQuaid
93e0e85352
Merge pull request #19882 from Homebrew/forbid_casks_var_output
cask/installer: output the correct environment variable.
2025-05-02 15:44:27 +00:00
Justin Rackliffe
3761d70785 Revised conditional logic to match CONTRIBUTING.md recommendations on adhering to brew style findings. 2025-05-02 11:33:48 -04:00
Mike McQuaid
7657b68ce4
Merge pull request #19883 from Homebrew/redis-8
formula_auditor: remove redis version limit
2025-05-02 14:15:10 +00:00
Mike McQuaid
eae31bacdc
cask/installer: output the correct environment variable.
We previously would output `HOMEBREW_FORBIDDEN_CASKS` for both when it
was used and when `HOMEBREW_FORBID_CASKS` was set.
2025-05-02 14:38:26 +01:00
Bevan Kay
285b5074b9
formula_auditor: remove redis version limit 2025-05-02 23:27:52 +10:00
Justin Rackliffe
d73b0079e9 Resolve the corner case of anonymous OCI registry access (#16669). 2025-05-02 08:22:01 -04:00
Mike McQuaid
77b3a6e848
Merge pull request #19881 from Homebrew/max-wait-default
cmd/services: change --max-wait default
2025-05-02 07:11:02 +00:00
Mike McQuaid
d7dedbd3ed
Merge pull request #19863 from Homebrew/service-stop-domain-fix
services: try multiple domains when stopping
2025-05-02 07:10:45 +00:00
Mike McQuaid
4219c60c12
Merge pull request #19877 from Homebrew/respond-to-cleanup
standalone/init: cleanup respond_to? check
2025-05-02 07:09:57 +00:00
Mike McQuaid
b44a475728
Merge pull request #19873 from botantony/github-runner-matrix
github_runner_matrix: emulate plaform when sending `compatible?` requests
2025-05-02 07:09:40 +00:00
Mike McQuaid
dde40ca393
Merge pull request #19865 from Homebrew/forbid_casks
Add `HOMEBREW_FORBID_CASKS` to allow forbidding all casks.
2025-05-02 07:08:55 +00:00
Bo Anderson
ae58b3ef21
services: try multiple domains when stopping 2025-05-02 06:19:53 +01:00
Bo Anderson
d3591482b2
cmd/services: change --max-wait default 2025-05-02 06:16:55 +01:00
Patrick Linnane
ad6a301d1b
Merge pull request #19879 from Homebrew/dependabot/github_actions/ruby/setup-ruby-1.237.0
build(deps): bump ruby/setup-ruby from 1.235.0 to 1.237.0
2025-05-02 04:18:22 +00:00
Patrick Linnane
e5569dbb22
Merge pull request #19878 from Homebrew/dependabot/github_actions/actions/create-github-app-token-2.0.3
build(deps): bump actions/create-github-app-token from 2.0.2 to 2.0.3
2025-05-02 04:17:58 +00:00
Thierry Moisan
84704c5587
patches audit: bitbucket patches should use api 2025-05-01 22:53:42 -04:00
Bo Anderson
1d025f9f8f
Merge pull request #19876 from Homebrew/gha-frozen-string-fix
utils/github/actions: fix frozen string handling
2025-05-02 01:17:02 +00:00
dependabot[bot]
babc5c0039
build(deps): bump ruby/setup-ruby from 1.235.0 to 1.237.0
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.235.0 to 1.237.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](dffc446db9...eaecf785f6)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.237.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 00:45:44 +00:00
dependabot[bot]
fec6f7676d
build(deps): bump actions/create-github-app-token from 2.0.2 to 2.0.3
Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Commits](3ff1caaa28...30bf6253fa)

---
updated-dependencies:
- dependency-name: actions/create-github-app-token
  dependency-version: 2.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 00:45:39 +00:00
Bo Anderson
dbf180cb89
standalone/init: cleanup respond_to? check 2025-05-02 01:40:13 +01:00
Bo Anderson
90a372b433
Merge pull request #19875 from Homebrew/lazy_object-fix
lazy_object: fix `__getobj__` signature
2025-05-02 00:38:58 +00:00
Bo Anderson
e35709cb43
utils/github/actions: fix frozen string handling 2025-05-02 01:35:04 +01:00
Patrick Linnane
731179a40a
Merge pull request #19874 from Homebrew/dependabot-rspec-group
dependabot: Group RSpec updates
2025-05-02 00:33:58 +00:00
Bo Anderson
6403d1379e
lazy_object: fix __getobj__ signature 2025-05-02 01:26:58 +01:00
Patrick Linnane
080ade602a
Merge pull request #19872 from Homebrew/dependabot/bundler/Library/Homebrew/rspec-expectations-3.13.4
build(deps-dev): bump rspec-expectations from 3.13.3 to 3.13.4 in /Library/Homebrew
2025-05-01 23:20:27 +00:00
Patrick Linnane
e79a0530d6
dependabot: Group RSpec updates
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-05-01 16:14:02 -07:00
BrewTestBot
b46ad9b838
Update RBI files for rspec-expectations.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-01 23:11:03 +00:00
BrewTestBot
cc9e91d997
brew vendor-gems: commit updates. 2025-05-01 23:10:55 +00:00
dependabot[bot]
a37be23616
build(deps-dev): bump rspec-expectations in /Library/Homebrew
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.13.3 to 3.13.4.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/commits)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-version: 3.13.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 23:08:20 +00:00
Patrick Linnane
dc971c3a86
Merge pull request #19868 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-9a544301f8
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-05-01 22:54:17 +00:00
Patrick Linnane
b20a6ea5ea
Merge pull request #19871 from Homebrew/dependabot/bundler/Library/Homebrew/rspec-mocks-3.13.3
build(deps-dev): bump rspec-mocks from 3.13.2 to 3.13.3 in /Library/Homebrew
2025-05-01 22:53:30 +00:00
Patrick Linnane
fa77e01765
Merge pull request #19870 from Homebrew/dependabot/bundler/Library/Homebrew/ruby-lsp-0.23.16
build(deps-dev): bump ruby-lsp from 0.23.15 to 0.23.16 in /Library/Homebrew
2025-05-01 22:53:07 +00:00
Patrick Linnane
f3d26a3564
Merge pull request #19869 from Homebrew/dependabot/bundler/Library/Homebrew/rspec-support-3.13.3
build(deps-dev): bump rspec-support from 3.13.2 to 3.13.3 in /Library/Homebrew
2025-05-01 22:52:49 +00:00
BrewTestBot
0a7c4db1bf
brew vendor-gems: commit updates. 2025-05-01 22:43:49 +00:00
BrewTestBot
8ca9a1f121
Update RBI files for rspec-mocks.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-01 22:43:30 +00:00
BrewTestBot
c250e2d298
Update RBI files for ruby-lsp.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-01 22:43:27 +00:00
BrewTestBot
6d7b01c9b7
brew vendor-gems: commit updates. 2025-05-01 22:43:23 +00:00
BrewTestBot
9b12c9bf35
brew vendor-gems: commit updates. 2025-05-01 22:43:18 +00:00
BrewTestBot
a92fe2c81e
Update RBI files for rspec-support.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-05-01 22:43:11 +00:00
BrewTestBot
36dbe44e0f
brew vendor-gems: commit updates. 2025-05-01 22:43:05 +00:00
botantony
d8144ce5e3
github_runner_matrix: emulate plaform when sending compatible? requests
Signed-off-by: botantony <antonsm21@gmail.com>
2025-05-01 23:25:23 +02:00
dependabot[bot]
8e0a3649fc
build(deps-dev): bump rspec-mocks in /Library/Homebrew
Bumps [rspec-mocks](https://github.com/rspec/rspec-mocks) from 3.13.2 to 3.13.3.
- [Release notes](https://github.com/rspec/rspec-mocks/releases)
- [Changelog](https://github.com/rspec/rspec-mocks/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-mocks/commits)

---
updated-dependencies:
- dependency-name: rspec-mocks
  dependency-version: 3.13.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 18:17:51 +00:00
dependabot[bot]
2ed7470be1
build(deps-dev): bump ruby-lsp in /Library/Homebrew
Bumps [ruby-lsp](https://github.com/Shopify/ruby-lsp) from 0.23.15 to 0.23.16.
- [Release notes](https://github.com/Shopify/ruby-lsp/releases)
- [Commits](https://github.com/Shopify/ruby-lsp/compare/v0.23.15...v0.23.16)

---
updated-dependencies:
- dependency-name: ruby-lsp
  dependency-version: 0.23.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 18:17:23 +00:00
dependabot[bot]
ff51c9603e
build(deps-dev): bump rspec-support in /Library/Homebrew
Bumps [rspec-support](https://github.com/rspec/rspec) from 3.13.2 to 3.13.3.
- [Changelog](https://github.com/rspec/rspec/blob/rspec-support-v3.13.3/rspec-support/Changelog.md)
- [Commits](https://github.com/rspec/rspec/compare/rspec-support-v3.13.2...rspec-support-v3.13.3)

---
updated-dependencies:
- dependency-name: rspec-support
  dependency-version: 3.13.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 18:17:08 +00:00
dependabot[bot]
7ac55359a2
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12046 to 0.5.12048
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 18:16:47 +00:00
Mike McQuaid
30d9ea24c5
Add HOMEBREW_FORBID_CASKS to allow forbidding all casks.
`HOMEBREW_FORBIDDEN_CASKS` allows forbidding specific casks but, in some
cases, you may wish to forbid all casks from installation.
2025-05-01 09:48:53 +01:00
Mike McQuaid
bbac5be4d3
Merge pull request #19864 from Homebrew/api-utf8
api: force encoding to UTF-8
2025-05-01 07:34:57 +00:00
Mike McQuaid
d317adb0d5
Merge pull request #19862 from tyuwags/master
Setting `HOMEBREW_ASK` to nil in case it was set before, fixes #19861
2025-05-01 07:24:15 +00:00
Bo Anderson
4c19e11abe
api: force encoding to UTF-8 2025-05-01 07:25:18 +01:00
thibhero
d19de85896 Setting HOMEBREW_ASK to nil in case it was set before 2025-04-30 23:50:07 -04:00
Patrick Linnane
d8b96a4385
Merge pull request #19859 from Homebrew/dependabot/bundler/Library/Homebrew/sorbet-094bd82d42
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
2025-04-30 19:31:18 +00:00
Patrick Linnane
d36e5bfa2e
Merge pull request #19860 from Homebrew/dependabot/bundler/Library/Homebrew/public_suffix-6.0.2
build(deps): bump public_suffix from 6.0.1 to 6.0.2 in /Library/Homebrew
2025-04-30 19:30:40 +00:00
BrewTestBot
fabd49d34c
brew vendor-gems: commit updates. 2025-04-30 19:21:23 +00:00
BrewTestBot
72267c715b
brew vendor-gems: commit updates. 2025-04-30 19:21:11 +00:00
Patrick Linnane
aea398b650
Merge pull request #19858 from Homebrew/dependabot/pip/Library/Homebrew/formula-analytics/setuptools-80.1.0
build(deps): bump setuptools from 80.0.0 to 80.1.0 in /Library/Homebrew/formula-analytics
2025-04-30 19:19:49 +00:00
dependabot[bot]
86ea24ce3c
build(deps): bump public_suffix from 6.0.1 to 6.0.2 in /Library/Homebrew
Bumps [public_suffix](https://github.com/weppos/publicsuffix-ruby) from 6.0.1 to 6.0.2.
- [Changelog](https://github.com/weppos/publicsuffix-ruby/blob/main/CHANGELOG.md)
- [Commits](https://github.com/weppos/publicsuffix-ruby/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: public_suffix
  dependency-version: 6.0.2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 18:26:45 +00:00
dependabot[bot]
e1cbfa7729
build(deps): bump the sorbet group in /Library/Homebrew with 4 updates
Bumps the sorbet group in /Library/Homebrew with 4 updates: [sorbet-static-and-runtime](https://github.com/sorbet/sorbet), [sorbet-runtime](https://github.com/sorbet/sorbet), [sorbet](https://github.com/sorbet/sorbet) and [sorbet-static](https://github.com/sorbet/sorbet).


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

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

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

Updates `sorbet-static` from 0.5.12043 to 0.5.12046
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 18:25:57 +00:00
dependabot[bot]
c8e5ed7329
build(deps): bump setuptools in /Library/Homebrew/formula-analytics
Bumps [setuptools](https://github.com/pypa/setuptools) from 80.0.0 to 80.1.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.0.0...v80.1.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.1.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 18:23:12 +00:00
Mike McQuaid
beef5fbae7
Merge pull request #19855 from Homebrew/sorbet-files-update
sorbet: Update RBI files.
2025-04-30 16:11:51 +00:00
Mike McQuaid
e33222b9c1
formula: remove unneeded attr_reader. 2025-04-30 16:42:29 +01:00
BrewTestBot
5e5f5b22df
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/master/.github/workflows/sorbet.yml) workflow.
2025-04-30 16:41:49 +01:00
Mike McQuaid
b226a39585
Merge pull request #19852 from Homebrew/bluesky
README: add Bluesky link.
2025-04-30 11:08:50 +00:00
Mike McQuaid
568945fd1b
README: add Bluesky link.
We're on Bluesky now.
2025-04-30 11:59:59 +01:00
Bevan Kay
f3a418a917
Merge pull request #19854 from botantony/autobump-fix
tap: fix autobump logic for unofficial taps
2025-04-30 07:21:14 +00:00
botantony
1791c2e2a6
tap_auditor: do not audit autobump.txt in official taps
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 22:38:14 +02:00
botantony
a043e7bbf8
tap: fix autobump logic for unofficial taps
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 22:10:33 +02:00
Mike McQuaid
335933f67c
Merge pull request #19786 from botantony/autobump
formula/cask: add `no_autobump` method
2025-04-29 17:02:35 +00:00
botantony
11652a7a62 tap: exclude deprecated and disabled packages from autobump list
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
18296808a2 dev-cmd/bump-*-pr: change autobump package message
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
600826a7e7 no_autobump!: update manpage and completions
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
a10b635fe9 no_autobump!: suggestions from contributors and docs
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
79cf39fc1d formula/cask: add symbol support to no_autobump! method
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
5c032d3616 formula: fix JSON API generation for no_autobump! method
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
562c104b7e dev-cmd/bump: replace --no-auto with --no-autobump
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
91f328950f test/fixtures: fix cask JSON fixture
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
ad66e0c418 tap: get autobump list from formula/cask API
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
9ff2abbcdf no_autobump!: rename no_autobump_msg field to no_autobump_message
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
botantony
1fcacdc2dc formula/cask DSL: add no_autobump! method
Signed-off-by: botantony <antonsm21@gmail.com>
2025-04-29 18:04:59 +02:00
Bo Anderson
0195d9a6d6
Merge pull request #19853 from Homebrew/ci-fix
Fix CI errors on 20.04
2025-04-29 15:54:31 +00:00
Bo Anderson
9932c387d8
Fix CI errors on 20.04 2025-04-29 15:45:56 +01:00
595 changed files with 20075 additions and 70037 deletions

View File

@ -1,7 +1,7 @@
// For format details, see https://aka.ms/devcontainer.json.
{
"name": "Homebrew/brew",
"image": "ghcr.io/homebrew/brew:master",
"image": "ghcr.io/homebrew/brew:main",
"workspaceFolder": "/home/linuxbrew/.linuxbrew/Homebrew",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/linuxbrew/.linuxbrew/Homebrew,type=bind,consistency=cached",
"onCreateCommand": ".devcontainer/on-create-command.sh",

View File

@ -4,7 +4,7 @@ type: "Bug"
body:
- type: markdown
attributes:
value: Please note we will close your issue without comment if you do not correctly fill out the issue checklist below and provide ALL the requested information. If you repeatedly fail to use the issue template, we will block you from ever submitting issues to Homebrew again.
value: Please note we may close your issue without comment if you do not fill out the issue checklist below and provide ALL the requested information (even if you consider them irrelevant). If you are unwilling to use the issue template, we may block you from ever submitting future issues to Homebrew.
- type: textarea
attributes:
render: shell
@ -16,10 +16,10 @@ body:
label: Verification
description: Please verify that you've followed these steps. If you cannot truthfully check these boxes, open a discussion at https://github.com/orgs/Homebrew/discussions instead.
options:
- label: My "`brew doctor` output" above says `Your system is ready to brew.` and am still able to reproduce my issue.
required: true
- label: I ran `brew update` twice and am still able to reproduce my issue.
required: true
- label: My "`brew doctor` output" above says `Your system is ready to brew` or a definitely unrelated `Tier` message.
required: true
- label: This issue's title and/or description do not reference a single formula e.g. `brew install wget`. If they do, open an issue at https://github.com/Homebrew/homebrew-core/issues/new/choose instead.
required: true
- type: textarea

View File

@ -0,0 +1,7 @@
# This file is synced from the `.github` repository, do not modify it directly.
extensions:
- addsTo:
pack: codeql/actions-all
extensible: trustedActionsOwnerDataModel
data:
- ["Homebrew"]

107
.github/dependabot.yml vendored
View File

@ -1,69 +1,94 @@
# This file is synced from the `.github` repository, do not modify it directly.
---
version: 2
updates:
- package-ecosystem: github-actions
directory: /
directory: "/"
schedule:
interval: weekly
day: friday
time: '08:00'
timezone: Etc/UTC
allow:
- dependency-type: all
# The actions in triage-issues.yml are updated in the Homebrew/.github repo
ignore:
- dependency-name: actions/stale
groups:
artifacts:
dependabot:
patterns:
- actions/*-artifact
open-pull-requests-limit: 10
- "*"
cooldown:
default-days: 1
include:
- "*"
- package-ecosystem: bundler
directory: /Library/Homebrew
directories:
- "/Library/Homebrew"
schedule:
interval: daily
interval: weekly
day: friday
time: '08:00'
timezone: Etc/UTC
allow:
- dependency-type: all
groups:
sorbet:
dependabot:
patterns:
- "sorbet*"
open-pull-requests-limit: 10
- package-ecosystem: npm
directory: /
schedule:
interval: daily
allow:
- dependency-type: all
open-pull-requests-limit: 10
- "*"
cooldown:
default-days: 1
semver-major-days: 14
semver-minor-days: 7
semver-patch-days: 1
include:
- "*"
- package-ecosystem: docker
directory: /
directory: "/"
schedule:
interval: daily
interval: weekly
day: friday
time: '08:00'
timezone: Etc/UTC
allow:
- dependency-type: all
open-pull-requests-limit: 10
groups:
dependabot:
patterns:
- "*"
- package-ecosystem: devcontainers
directory: /
directory: "/"
schedule:
interval: daily
interval: weekly
day: friday
time: '08:00'
timezone: Etc/UTC
allow:
- dependency-type: all
open-pull-requests-limit: 10
groups:
dependabot:
patterns:
- "*"
cooldown:
default-days: 1
include:
- "*"
- package-ecosystem: pip
directory: /
directories:
- "/Library/Homebrew/formula-analytics/"
schedule:
interval: daily
interval: weekly
day: friday
time: '08:00'
timezone: Etc/UTC
allow:
- dependency-type: all
open-pull-requests-limit: 10
groups:
dependabot:
patterns:
- "*"
cooldown:
default-days: 1
semver-major-days: 14
semver-minor-days: 7
semver-patch-days: 1
include:
- "*"
- package-ecosystem: pip
directory: /Library/Homebrew/formula-analytics/
schedule:
interval: daily
allow:
- dependency-type: all
open-pull-requests-limit: 10

View File

@ -1,18 +1,12 @@
name: actionlint
# This file is synced from the `.github` repository, do not modify it directly.
name: Actionlint
on:
push:
branches:
- main
- master
pull_request:
paths:
- '.github/workflows/*.ya?ml'
- '.github/actionlint.yaml'
env:
HOMEBREW_DEVELOPER: 1
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_ENV_HINTS: 1
defaults:
run:
@ -22,16 +16,25 @@ concurrency:
group: "actionlint-${{ github.ref }}"
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
env:
HOMEBREW_DEVELOPER: 1
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_ENV_HINTS: 1
permissions: {}
jobs:
workflow_syntax:
if: github.repository_owner == 'Homebrew'
runs-on: ubuntu-latest
permissions:
contents: read
container:
image: ghcr.io/homebrew/ubuntu22.04:main
steps:
- name: Set up Homebrew
id: setup-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
@ -40,31 +43,44 @@ jobs:
- name: Install tools
run: brew install actionlint shellcheck zizmor
- name: Set up GITHUB_WORKSPACE
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- run: zizmor --format sarif . > results.sarif
env:
HOMEBREW_REPOSITORY: ${{ steps.setup-homebrew.outputs.repository-path }}
run: |
# Annotations work only relative to GITHUB_WORKSPACE
(shopt -s dotglob; rm -rf "${GITHUB_WORKSPACE:?}"/*; mv "${HOMEBREW_REPOSITORY:?}"/* "$GITHUB_WORKSPACE")
rmdir "$HOMEBREW_REPOSITORY"
ln -vs "$GITHUB_WORKSPACE" "$HOMEBREW_REPOSITORY"
echo "::add-matcher::.github/actionlint-matcher.json"
- run: |
# NOTE: exit code intentionally suppressed here
zizmor --format sarif . > results.sarif || true
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload SARIF file
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
# We can't use the SARIF file when triggered by `merge_group` so we don't upload it.
if: always() && github.event_name != 'merge_group'
with:
name: results.sarif
path: results.sarif
- name: Set up actionlint
run: |
# In homebrew-core, setting `shell: /bin/bash` prevents shellcheck from running on
# those steps, so let's change them to `shell: bash` temporarily for better linting.
sed -i 's|shell: /bin/bash -x|shell: bash -x|' .github/workflows/*.y*ml
# In homebrew-core, the JSON matcher needs to be accessible to the container host.
cp "$(brew --repository)/.github/actionlint-matcher.json" "$HOME"
echo "::add-matcher::$HOME/actionlint-matcher.json"
- run: actionlint
upload_sarif:
needs: workflow_syntax
# We want to always upload this even if `actionlint` failed.
# This is only available on public repositories.
if: >
always() &&
!contains(fromJSON('["cancelled", "skipped"]'), needs.workflow_syntax.result) &&
!github.event.repository.private &&
github.event_name != 'merge_group'
runs-on: ubuntu-latest
permissions:
contents: read
@ -77,7 +93,7 @@ jobs:
path: results.sarif
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
sarif_file: results.sarif
category: zizmor

View File

@ -27,7 +27,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false

View File

@ -3,10 +3,9 @@ name: "CodeQL"
on:
push:
branches:
- main
- master
pull_request:
branches:
- master
defaults:
run:
@ -28,7 +27,7 @@ jobs:
persist-credentials: false
- name: Initialize CodeQL
uses: github/codeql-action/init@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
languages: ruby
config: |
@ -36,4 +35,4 @@ jobs:
- Library/Homebrew/vendor
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2

View File

@ -4,6 +4,7 @@ on:
pull_request:
push:
branches:
- main
- master
merge_group:
release:
@ -38,8 +39,8 @@ jobs:
fetch-depth: 0
persist-credentials: false
- name: Fetch origin/master from Git
run: git fetch origin master
- name: Fetch origin/HEAD from Git
run: git fetch origin HEAD
- name: Determine build attributes
id: attributes
@ -83,12 +84,16 @@ jobs:
)
fi
elif [[ "${GITHUB_EVENT_NAME}" == "push" &&
"${GITHUB_REF}" == "refs/heads/master" &&
("${GITHUB_REF}" == "refs/heads/master" || "${GITHUB_REF}" == "refs/heads/main") &&
"${version}" == "22.04" ]]; then
tags+=(
"ghcr.io/homebrew/brew:main"
"ghcr.io/homebrew/brew:master"
"ghcr.io/homebrew/ubuntu${version}:main"
"ghcr.io/homebrew/ubuntu${version}:master"
"homebrew/brew:main"
"homebrew/brew:master"
"homebrew/ubuntu${version}:main"
"homebrew/ubuntu${version}:master"
)
fi
@ -160,11 +165,11 @@ jobs:
fetch-depth: 0
persist-credentials: false
- name: Fetch origin/master from Git
run: git fetch origin master
- name: Fetch origin/HEAD from Git
run: git fetch origin HEAD
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
with:
cache-binary: false
@ -190,7 +195,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker image
uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
load: true
@ -227,7 +232,7 @@ jobs:
- name: Deploy the Docker image by digest
id: digest
if: fromJSON(steps.attributes.outputs.push)
uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
cache-from: type=registry,ref=ghcr.io/homebrew/ubuntu${{ matrix.version }}:cache
@ -263,7 +268,7 @@ jobs:
version: ${{ fromJSON(needs.generate-tags.outputs.matrix) }}
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
with:
cache-binary: false

View File

@ -24,7 +24,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
@ -52,7 +52,7 @@ jobs:
run: vale docs/
- name: Install Ruby
uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.235.0
uses: ruby/setup-ruby@a4effe49ee8ee5b8b5091268c473a4628afb5651 # v1.245.0
with:
bundler-cache: true
working-directory: docs
@ -67,7 +67,13 @@ jobs:
- name: Generate formulae.brew.sh API samples
if: github.repository == 'Homebrew/formulae.brew.sh'
working-directory: docs
run: ../script/generate-api-samples.rb
run: ../script/generate-api-samples.rb --template
- name: Cache HTML Proofer
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: tmp/.htmlproofer
key: ${{ runner.os }}-htmlproofer
- name: Build the site and check for broken links
working-directory: docs

View File

@ -28,7 +28,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
@ -55,7 +55,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false

View File

@ -43,7 +43,7 @@ jobs:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
@ -135,7 +135,7 @@ jobs:
fi
- name: Generate build provenance
uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0
with:
subject-path: Homebrew-${{ steps.homebrew-version.outputs.version }}.pkg
@ -230,17 +230,15 @@ jobs:
--password "${PKG_APPLE_ID_APP_SPECIFIC_PASSWORD}"
--wait
- name: Install gh
run: brew install gh
- name: Upload installer to GitHub release
if: github.event_name == 'release'
env:
GH_TOKEN: ${{ github.token }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INSTALLER_PATH: ${{ needs.build.outputs.installer_path }}
run: gh release upload --repo Homebrew/brew
"${GITHUB_REF//refs\/tags\//}"
"${INSTALLER_PATH}"
run: |
VERSION="${INSTALLER_PATH#Homebrew-}"
VERSION="${VERSION%.pkg}"
gh release upload --repo Homebrew/brew "${VERSION}" "${INSTALLER_PATH}"
issue:
needs: [build, test, upload]
@ -253,7 +251,7 @@ jobs:
issues: write
steps:
- name: Open, update, or close pkg installer issue
uses: Homebrew/actions/create-or-update-issue@master
uses: Homebrew/actions/create-or-update-issue@main
with:
title: Failed to publish pkg installer
body: >
@ -261,7 +259,7 @@ jobs:
${{ github.ref_name }}. No pkg installer was uploaded to the GitHub
release.
labels: bug,release blocker
update-existing: ${{ contains(needs.*.result, 'failure') }}
update-existing: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}
close-existing: ${{ needs.upload.result == 'success' }}
close-from-author: github-actions[bot]
close-comment: >

View File

@ -3,6 +3,7 @@ name: Ruby Documentation CI
on:
push:
branches:
- main
- master
pull_request:
@ -28,7 +29,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
@ -42,7 +43,7 @@ jobs:
persist-credentials: false
- name: Install Ruby
uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.235.0
uses: ruby/setup-ruby@a4effe49ee8ee5b8b5091268c473a4628afb5651 # v1.245.0
with:
bundler-cache: true
working-directory: rubydoc

View File

@ -1,9 +1,10 @@
name: Update schema data
name: Update SBOM schema
on:
push:
paths:
- .github/workflows/schemas.yml
- .github/workflows/sbom.yml
branches-ignore:
- main
- master
schedule:
- cron: "0 0 * * *"
@ -17,25 +18,25 @@ defaults:
shell: bash -xeuo pipefail {0}
jobs:
spdx:
sbom:
if: github.repository == 'Homebrew/brew'
runs-on: ubuntu-latest
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
test-bot: false
- name: Configure Git user
uses: Homebrew/actions/git-user-config@master
uses: Homebrew/actions/git-user-config@main
with:
username: BrewTestBot
- name: Set up commit signing
uses: Homebrew/actions/setup-commit-signing@master
uses: Homebrew/actions/setup-commit-signing@main
with:
signing_key: ${{ secrets.BREWTESTBOT_SSH_SIGNING_KEY }}
@ -55,7 +56,7 @@ jobs:
git checkout "${BRANCH}"
git checkout "Library/Homebrew/data/schemas"
else
git checkout --no-track -B "${BRANCH}" origin/master
git checkout --no-track -B "${BRANCH}" origin/HEAD
fi
# Intentionally tracking 2.3.x to match what we output in sbom.rb. 3.0 also doesn't have a JSON Schema.
@ -67,9 +68,10 @@ jobs:
if ! git diff --exit-code Library/Homebrew/data/schemas
then
git add "Library/Homebrew/data/schemas"
git commit -m "data/schemas: update schema data." -m "Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/master/.github/workflows/schemas.yml)."
git commit -m "data/schemas: update schema data." -m "Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/schemas.yml)."
echo "committed=true" >> "$GITHUB_OUTPUT"
PULL_REQUEST_STATE="$(gh pr view --json=state | jq -r ".state")"
PULL_REQUEST_STATE="$(gh pr view --json=state | jq -r ".state" || true)"
if [[ "${PULL_REQUEST_STATE}" != "OPEN" ]]
then
echo "pull_request=true" >> "$GITHUB_OUTPUT"
@ -78,13 +80,13 @@ jobs:
- name: Push commits
if: steps.update.outputs.committed == 'true'
uses: Homebrew/actions/git-try-push@master
uses: Homebrew/actions/git-try-push@main
with:
token: ${{ secrets.HOMEBREW_GITHUB_PUBLIC_REPO_TOKEN }}
directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
branch: ${{ steps.update.outputs.branch }}
force: true
origin_branch: "master"
origin_branch: "HEAD"
- name: Open a pull request
if: steps.update.outputs.pull_request == 'true'
@ -92,3 +94,26 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_PUBLIC_REPO_TOKEN }}
working-directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
issue:
needs: sbom
if: always() && github.event_name == 'schedule'
runs-on: ubuntu-latest
env:
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
permissions:
# To create or update issues
issues: write
steps:
- name: Open, update, or close schema issue
uses: Homebrew/actions/create-or-update-issue@main
with:
title: Failed to update SBOM schema
body: >
The SBOM schema workflow [failed](${{ env.RUN_URL }}). No SBOM schema was updated.
labels: bug
update-existing: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}
close-existing: ${{ needs.sbom.result == 'success' }}
close-from-author: github-actions[bot]
close-comment: >
The SBOM schema workflow [succeeded](${{ env.RUN_URL }}). Closing this issue.

View File

@ -10,6 +10,7 @@ on:
paths:
- .github/workflows/sorbet.yml
branches-ignore:
- main
- master
schedule:
- cron: "0 0 * * *"
@ -29,7 +30,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
@ -37,13 +38,13 @@ jobs:
- name: Configure Git user
if: github.event_name != 'pull_request'
uses: Homebrew/actions/git-user-config@master
uses: Homebrew/actions/git-user-config@main
with:
username: BrewTestBot
- name: Set up commit signing
if: github.event_name != 'pull_request'
uses: Homebrew/actions/setup-commit-signing@master
uses: Homebrew/actions/setup-commit-signing@main
with:
signing_key: ${{ secrets.BREWTESTBOT_SSH_SIGNING_KEY }}
@ -63,7 +64,7 @@ jobs:
git checkout "${BRANCH}"
git checkout "Library/Homebrew/sorbet"
else
git checkout --no-track -B "${BRANCH}" origin/master
git checkout --no-track -B "${BRANCH}" origin/HEAD
fi
fi
@ -80,17 +81,17 @@ jobs:
then
git add "Library/Homebrew/sorbet"
git commit -m "sorbet: Update RBI files." \
-m "Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/master/.github/workflows/sorbet.yml) workflow."
-m "Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sorbet.yml) workflow."
if ! git diff --stat --exit-code "Library/Homebrew"
then
git add "Library/Homebrew/"
git commit -m "sorbet: Autobump sigils via Spoom" \
-m "Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/master/.github/workflows/sorbet.yml) workflow."
-m "Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sorbet.yml) workflow."
fi
echo "committed=true" >> "$GITHUB_OUTPUT"
PULL_REQUEST_STATE="$(gh pr view --json=state | jq -r ".state")"
PULL_REQUEST_STATE="$(gh pr view --json=state | jq -r ".state" || true)"
if [[ "${PULL_REQUEST_STATE}" != "OPEN" ]]
then
echo "pull_request=true" >> "$GITHUB_OUTPUT"
@ -99,13 +100,13 @@ jobs:
- name: Push commits
if: steps.commit.outputs.committed == 'true'
uses: Homebrew/actions/git-try-push@master
uses: Homebrew/actions/git-try-push@main
with:
token: ${{ secrets.HOMEBREW_GITHUB_PUBLIC_REPO_TOKEN }}
directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
branch: ${{ steps.update.outputs.branch }}
force: true
origin_branch: "master"
origin_branch: "HEAD"
- name: Open a pull request
if: steps.commit.outputs.pull_request == 'true'
@ -113,3 +114,26 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_PUBLIC_REPO_TOKEN }}
working-directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
issue:
needs: tapioca
if: always() && github.event_name == 'schedule'
runs-on: ubuntu-latest
env:
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
permissions:
# To create or update issues
issues: write
steps:
- name: Open, update, or close Sorbet issue
uses: Homebrew/actions/create-or-update-issue@main
with:
title: Failed to update RBI files
body: >
The Sorbet workflow [failed](${{ env.RUN_URL }}). No RBI files were updated.
labels: bug
update-existing: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}
close-existing: ${{ needs.tapioca.result == 'success' }}
close-from-author: github-actions[bot]
close-comment: >
The Sorbet workflow [succeeded](${{ env.RUN_URL }}). Closing this issue.

View File

@ -4,6 +4,7 @@ on:
paths:
- .github/workflows/spdx.yml
branches-ignore:
- main
- master
schedule:
- cron: "0 0 * * *"
@ -23,19 +24,19 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
test-bot: false
- name: Configure Git user
uses: Homebrew/actions/git-user-config@master
uses: Homebrew/actions/git-user-config@main
with:
username: BrewTestBot
- name: Set up commit signing
uses: Homebrew/actions/setup-commit-signing@master
uses: Homebrew/actions/setup-commit-signing@main
with:
signing_key: ${{ secrets.BREWTESTBOT_SSH_SIGNING_KEY }}
@ -55,15 +56,16 @@ jobs:
git checkout "${BRANCH}"
git checkout "Library/Homebrew/data/spdx"
else
git checkout --no-track -B "${BRANCH}" origin/master
git checkout --no-track -B "${BRANCH}" origin/HEAD
fi
if brew update-license-data
then
git add "Library/Homebrew/data/spdx"
git commit -m "spdx: update license data." -m "Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/master/.github/workflows/spdx.yml)."
git commit -m "spdx: update license data." -m "Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/spdx.yml)."
echo "committed=true" >> "$GITHUB_OUTPUT"
PULL_REQUEST_STATE="$(gh pr view --json=state | jq -r ".state")"
PULL_REQUEST_STATE="$(gh pr view --json=state | jq -r ".state" || true)"
if [[ "${PULL_REQUEST_STATE}" != "OPEN" ]]
then
echo "pull_request=true" >> "$GITHUB_OUTPUT"
@ -72,13 +74,13 @@ jobs:
- name: Push commits
if: steps.update.outputs.committed == 'true'
uses: Homebrew/actions/git-try-push@master
uses: Homebrew/actions/git-try-push@main
with:
token: ${{ secrets.HOMEBREW_GITHUB_PUBLIC_REPO_TOKEN }}
directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
branch: ${{ steps.update.outputs.branch }}
force: true
origin_branch: "master"
origin_branch: "HEAD"
- name: Open a pull request
if: steps.update.outputs.pull_request == 'true'
@ -86,3 +88,26 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_PUBLIC_REPO_TOKEN }}
working-directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
issue:
needs: spdx
if: always() && github.event_name == 'schedule'
runs-on: ubuntu-latest
env:
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
permissions:
# To create or update issues
issues: write
steps:
- name: Open, update, or close SPDX issue
uses: Homebrew/actions/create-or-update-issue@main
with:
title: Failed to update SPDX license data
body: >
The SPDX license data workflow [failed](${{ env.RUN_URL }}). No SPDX license data was updated.
labels: bug
update-existing: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}
close-existing: ${{ needs.spdx.result == 'success' }}
close-from-author: github-actions[bot]
close-comment: >
The SPDX license data workflow [succeeded](${{ env.RUN_URL }}). Closing this issue.

View File

@ -3,6 +3,7 @@ name: Update sponsors, maintainers, manpage and completions
on:
push:
branches:
- main
- master
paths:
- .github/workflows/sponsors-maintainers-man-completions.yml
@ -32,19 +33,19 @@ jobs:
steps:
- name: Setup Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
test-bot: false
- name: Configure Git user
uses: Homebrew/actions/git-user-config@master
uses: Homebrew/actions/git-user-config@main
with:
username: BrewTestBot
- name: Set up commit signing
uses: Homebrew/actions/setup-commit-signing@master
uses: Homebrew/actions/setup-commit-signing@main
with:
signing_key: ${{ secrets.BREWTESTBOT_SSH_SIGNING_KEY }}
@ -60,7 +61,7 @@ jobs:
run: |
git fetch origin
if [[ -n "$GITHUB_REF_NAME" && "$GITHUB_REF_NAME" != "master" ]]
if [[ -n "$GITHUB_REF_NAME" && "$GITHUB_REF_NAME" != "master" && "$GITHUB_REF_NAME" != "main" ]]
then
BRANCH="$GITHUB_REF_NAME"
else
@ -76,7 +77,7 @@ jobs:
"manpages/brew.1" \
"completions"
else
git checkout --force --no-track -B "${BRANCH}" origin/master
git checkout --force --no-track -B "${BRANCH}" origin/HEAD
fi
if brew update-sponsors
@ -111,7 +112,7 @@ jobs:
if [[ -n "${COMMITTED-}" ]]
then
echo "committed=true" >> "$GITHUB_OUTPUT"
PULL_REQUEST_STATE="$(gh pr view --json=state | jq -r ".state")"
PULL_REQUEST_STATE="$(gh pr view --json=state | jq -r ".state" || true)"
if [[ "${PULL_REQUEST_STATE}" != "OPEN" ]]
then
echo "pull_request=true" >> "$GITHUB_OUTPUT"
@ -124,7 +125,7 @@ jobs:
- name: Push commits
if: steps.update.outputs.committed == 'true'
uses: Homebrew/actions/git-try-push@master
uses: Homebrew/actions/git-try-push@main
with:
token: ${{ secrets.HOMEBREW_GITHUB_PUBLIC_REPO_TOKEN }}
directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
@ -137,3 +138,26 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_PUBLIC_REPO_TOKEN }}
working-directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
issue:
needs: updates
if: always() && github.event_name == 'schedule'
runs-on: ubuntu-latest
env:
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
permissions:
# To create or update issues
issues: write
steps:
- name: Open, update, or close sponsors, maintainers, manpage and completions issue
uses: Homebrew/actions/create-or-update-issue@main
with:
title: Failed to update sponsors, maintainers, manpage and completions
body: >
The sponsors, maintainers, manpage and completions workflow [failed](${{ env.RUN_URL }}). No sponsors, maintainers, manpage and completions were updated.
labels: bug
update-existing: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}
close-existing: ${{ needs.updates.result == 'success' }}
close-from-author: github-actions[bot]
close-comment: >
The sponsors, maintainers, manpage and completions workflow [succeeded](${{ env.RUN_URL }}). Closing this issue.

View File

@ -38,7 +38,7 @@ jobs:
pull-requests: write
steps:
- name: Mark/Close Stale Issues and Pull Requests
uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0
uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 21
@ -68,7 +68,7 @@ jobs:
pull-requests: write
steps:
- name: Mark/Close Stale `bump-formula-pr` and `bump-cask-pr` Pull Requests
uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0
uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 2

View File

@ -0,0 +1,64 @@
name: Sync default branches
on:
push:
branches:
- main
- master
pull_request:
paths:
- .github/workflows/sync-default-branches.yml
permissions: {}
defaults:
run:
shell: bash -xeuo pipefail {0}
concurrency:
group: "sync-default-branches-${{ github.ref }}"
cancel-in-progress: true
jobs:
sync:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Configure Git user
uses: Homebrew/actions/git-user-config@main
with:
username: github-actions[bot]
- name: Determine source and target branches
id: branches
run: |
if [[ "${GITHUB_REF_NAME}" == "main" ]]; then
target="master"
source="main"
else
target="main"
source="master"
fi
echo "target=${target}" >> "$GITHUB_OUTPUT"
echo "source=${source}" >> "$GITHUB_OUTPUT"
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 1
persist-credentials: true
- name: Get target SHA
id: sha
run: |
TARGET_SHA=$(git ls-remote origin "refs/heads/${SOURCE_BRANCH}" | cut -f1)
echo "target=${TARGET_SHA}" >> "$GITHUB_OUTPUT"
env:
SOURCE_BRANCH: ${{ steps.branches.outputs.source }}
- name: Push target branch
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
run: git push origin "${TARGET_SHA}:refs/heads/${TARGET_BRANCH}" --force
env:
TARGET_SHA: ${{ steps.sha.outputs.target }}
TARGET_BRANCH: ${{ steps.branches.outputs.target }}

View File

@ -3,6 +3,7 @@ name: CI
on:
push:
branches:
- main
- master
pull_request:
merge_group:
@ -32,7 +33,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
@ -80,11 +81,11 @@ jobs:
name: tap syntax
needs: syntax
if: github.repository_owner == 'Homebrew'
runs-on: macos-14
runs-on: macos-15
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: true
cask: true
@ -135,13 +136,13 @@ jobs:
if: github.repository_owner == 'Homebrew' && github.event_name != 'push'
runs-on: ubuntu-latest
container:
image: ghcr.io/homebrew/brew:master
image: ghcr.io/homebrew/brew:main
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: true
core: false
cask: false
test-bot: false
@ -162,7 +163,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: true
cask: true
@ -185,14 +186,14 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
test-bot: false
- name: Configure Git user
uses: Homebrew/actions/git-user-config@master
uses: Homebrew/actions/git-user-config@main
with:
username: BrewTestBot
@ -213,14 +214,14 @@ jobs:
strategy:
matrix:
include:
- name: update-test (Ubuntu)
- name: update-test (Linux)
runs-on: ubuntu-latest
- name: update-test (macOS)
runs-on: macos-15
runs-on: macos-latest
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
@ -237,7 +238,6 @@ jobs:
name: ${{ matrix.name }}
needs: syntax
runs-on: ${{ matrix.runs-on }}
container: ${{ matrix.container }}
strategy:
matrix:
include:
@ -247,23 +247,16 @@ jobs:
- name: tests (generic OS)
test-flags: --generic --coverage
runs-on: ubuntu-latest
- name: tests (Ubuntu 24.04)
- name: tests (Linux)
test-flags: --coverage
runs-on: ubuntu-24.04
- name: tests (Ubuntu 22.04)
test-flags: --coverage
runs-on: ubuntu-22.04
- name: tests (Ubuntu 20.04)
test-flags: --coverage
runs-on: ubuntu-latest
container: ghcr.io/homebrew/ubuntu20.04:latest
- name: tests (macOS 15 arm64)
- name: tests (macOS)
test-flags: --coverage
runs-on: macos-15
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
# We only test needs_homebrew_core tests on macOS because
# homebrew/core is not available by default on GitHub-hosted Ubuntu
@ -335,21 +328,21 @@ jobs:
filenames=$(find Library/Homebrew/test/junit -name 'rspec*.xml' -print | tr '\n' ',')
echo "filenames=${filenames%,}" >> "$GITHUB_OUTPUT"
- uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
- uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
working-directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
files: ${{ steps.junit_xml.outputs.filenames }}
disable_search: true
token: ${{ secrets.CODECOV_TOKEN }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
- uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
working-directory: ${{ steps.set-up-homebrew.outputs.repository-path }}
files: Library/Homebrew/test/coverage/coverage.xml
disable_search: true
token: ${{ secrets.CODECOV_TOKEN }}
test-default-formula:
test-bot:
name: ${{ matrix.name }}
needs: syntax
if: github.repository_owner == 'Homebrew' && github.event_name != 'push'
@ -358,36 +351,76 @@ jobs:
strategy:
matrix:
include:
- name: test default formula (Ubuntu 24.04)
runs-on: ubuntu-latest
- name: test-bot (Linux arm64)
runs-on: ubuntu-24.04-arm
container: ghcr.io/homebrew/ubuntu24.04:latest
- name: test default formula (Ubuntu 22.04)
- name: test-bot (Linux x86_64)
runs-on: ubuntu-latest
container: ghcr.io/homebrew/ubuntu22.04:master
- name: test default formula (Ubuntu 20.04)
container: ghcr.io/homebrew/ubuntu22.04:main
# Use Debian Old Stable for testing Homebrew's glibc support.
- name: test-bot (Linux Homebrew glibc)
runs-on: ubuntu-latest
container: ghcr.io/homebrew/ubuntu20.04:latest
- name: test default formula (macOS 13 x86_64)
container: debian:oldstable
- name: test-bot (macOS x86_64)
runs-on: macos-13
- name: test default formula (macOS 15 arm64)
- name: test-bot (macOS arm64)
runs-on: macos-15
env:
HOMEBREW_TEST_BOT_ANALYTICS: 1
HOMEBREW_ENFORCE_SBOM: 1
steps:
- name: Install Homebrew and Homebrew's dependencies
# All other images are built from our Homebrew Dockerfile.
# This is the only one that needs to be set up manually.
if: matrix.container == 'debian:oldstable'
run: |
# Slimmed down version from the Homebrew Dockerfile
apt-get update
apt-get install -y --no-install-recommends \
bzip2 \
ca-certificates \
curl \
file \
g++ \
git-core \
less \
locales \
make \
netbase \
patch \
procps \
sudo \
uuid-runtime \
tzdata
# Install Homebrew
mkdir -p /home/linuxbrew/.linuxbrew/bin
# Don't do shallow clone or it's unshallowed by "Set up Homebrew"
git clone https://github.com/Homebrew/brew.git /home/linuxbrew/.linuxbrew/Homebrew
cd /home/linuxbrew/.linuxbrew/bin
ln -s ../Homebrew/bin/brew brew
echo "/home/linuxbrew/.linuxbrew/bin" >>"$GITHUB_PATH"
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: true
core: false
cask: false
test-bot: true
- run: brew test-bot --only-cleanup-before
- name: Setup environment variables
if: matrix.container == 'ghcr.io/homebrew/ubuntu20.04:latest'
run: echo "HOMEBREW_GLIBC_TESTING=1" >> "$GITHUB_ENV"
run: |
# Set enviroment variables to bypass `brew doctor` failures on Tier >=2 configurations
if [[ "${MATRIX_NAME}" == "test-bot (Linux arm64)" ]]; then
echo "HOMEBREW_ARM64_TESTING=1" >> "$GITHUB_ENV"
elif [[ "${MATRIX_NAME}" == "test-bot (Linux Homebrew glibc)" ]]; then
echo "HOMEBREW_GLIBC_TESTING=1" >> "$GITHUB_ENV"
fi
env:
MATRIX_NAME: ${{ matrix.name }}
- run: brew test-bot --only-setup
@ -395,7 +428,7 @@ jobs:
- run: brew test-bot --only-formulae --only-json-tab --test-default-formula
test-brew-bundle-services:
bundle-and-services:
name: ${{ matrix.name }}
needs: syntax
if: github.repository_owner == 'Homebrew' && github.event_name != 'push'
@ -403,16 +436,16 @@ jobs:
strategy:
matrix:
include:
- name: test brew bundle and brew services (Ubuntu)
- name: bundle and services (Linux)
runs-on: ubuntu-latest
- name: test brew bundle and brew services (macOS)
runs-on: macos-15
- name: bundle and services (macOS)
runs-on: macos-latest
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: true
core: false
cask: false
test-bot: false
@ -449,19 +482,22 @@ jobs:
brew services cleanup
brew bundle cleanup --force
test-analytics:
runs-on: ${{ matrix.os }}
analytics:
name: ${{ matrix.name }}
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
include:
- name: analytics (Linux)
runs-on: ubuntu-latest
- name: analytics (macOS)
runs-on: macos-latest
needs: syntax
if: github.repository_owner == 'Homebrew' && github.event_name != 'push'
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
- name: Setup Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0

View File

@ -9,6 +9,7 @@ on:
paths:
- .github/workflows/vendor-gems.yml
branches-ignore:
- main
- master
workflow_dispatch:
inputs:
@ -31,7 +32,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false
@ -39,13 +40,13 @@ jobs:
- name: Configure Git user
if: github.event_name == 'workflow_dispatch'
uses: Homebrew/actions/git-user-config@master
uses: Homebrew/actions/git-user-config@main
with:
username: BrewTestBot
- name: Set up commit signing
if: github.event_name == 'workflow_dispatch'
uses: Homebrew/actions/setup-commit-signing@master
uses: Homebrew/actions/setup-commit-signing@main
with:
signing_key: ${{ secrets.BREWTESTBOT_SSH_SIGNING_KEY }}
@ -91,7 +92,7 @@ jobs:
fi
- name: Generate push token
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
id: app-token
if: github.event_name == 'workflow_dispatch'
with:
@ -100,7 +101,7 @@ jobs:
- name: Push to pull request
if: github.event_name == 'workflow_dispatch'
uses: Homebrew/actions/git-try-push@master
uses: Homebrew/actions/git-try-push@main
with:
token: ${{ steps.app-token.outputs.token }}
directory: ${{ steps.set-up-homebrew.outputs.repository-path }}

View File

@ -19,7 +19,7 @@ jobs:
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
uses: Homebrew/actions/setup-homebrew@main
with:
core: false
cask: false

1
.github/zizmor.yml vendored
View File

@ -1,3 +1,4 @@
# This file is synced from the `.github` repository, do not modify it directly.
rules:
unpinned-uses:
config:

2
.gitignore vendored
View File

@ -164,6 +164,7 @@
!/completions
!/docs
!/manpages
!/CODEOWNERS
# Unignore our packaging files
!/package
@ -172,6 +173,7 @@
# Ignore generated documentation site
/docs/_site
/docs/.jekyll-metadata
/docs/tmp/.htmlproofer
/docs/vendor
/docs/Gemfile.lock

11
.vscode/mcp.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"servers": {
"Homebrew": {
"type": "stdio",
"command": "brew",
"args": [
"mcp-server"
]
}
}
}

View File

@ -1,5 +1,12 @@
#!/bin/bash
HOMEBREW_PREFIX="$(cd "$(dirname "$0")"/../ && pwd)"
if [[ -n "${BASH_SOURCE[0]}" ]]; then
SCRIPT_PATH="${BASH_SOURCE[0]}"
elif [[ -n "${ZSH_VERSION}" ]]; then
SCRIPT_PATH="${(%):-%x}"
else
SCRIPT_PATH="$0"
fi
HOMEBREW_PREFIX="$(cd "$(dirname "${SCRIPT_PATH}")"/../ && pwd)"
"${HOMEBREW_PREFIX}/bin/brew" install-bundler-gems --add-groups=style,typecheck,vscode >/dev/null 2>&1

View File

@ -40,7 +40,6 @@
"id": "default",
"name": "Brew Typecheck",
"description": "Default configuration",
"cwd": "${workspaceFolder}",
"command": [
"./bin/brew",
"typecheck",

11
CODEOWNERS Normal file
View File

@ -0,0 +1,11 @@
# Note that the naming of this file is incorrect for our case: these people do not "own" the provided files but are
# people with write-access to this repository who wish to approve changes to these files.
#
# Their review is required to merge PRs that change these files.
#
# To be explicit: we will never accept changes to this file adding people from outside the Homebrew GitHub
# organisation. If you are not a Homebrew maintainer: you do not personally "own" or "maintain" any files.
#
# Note: @Homebrew/plc does not have write-access to this repository, and therefore cannot be listed in this file.
docs/Support-Tiers.md @Homebrew/tsc @MikeMcQuaid

View File

@ -26,7 +26,7 @@ AllCops:
Include:
- "**/*.rbi"
Exclude:
- "Homebrew/sorbet/rbi/{dsl,gems}/**/*.rbi"
- "Homebrew/sorbet/rbi/{annotations,dsl,gems}/**/*.rbi"
- "Homebrew/sorbet/rbi/parser*.rbi"
- "Homebrew/bin/*"
- "Homebrew/vendor/**/*"
@ -304,7 +304,7 @@ Sorbet/StrictSigil:
- "Homebrew/utils/ruby_check_version_script.rb" # A standalone script.
- "Homebrew/{standalone,startup}/*.rb" # These are loaded before sorbet-runtime
- "Homebrew/test/**/*.rb"
- "Homebrew/bundle/{brew_dumper,checker,commands/exec}.rb" # These aren't typed: true yet.
- "Homebrew/bundle/{formula_dumper,checker,commands/exec}.rb" # These aren't typed: true yet.
Sorbet/TrueSigil:
Enabled: true

View File

@ -25,6 +25,7 @@ Style/Documentation:
- Homebrew
Include:
- abstract_command.rb
- autobump_constants.rb
- cask/cask.rb
- cask/dsl.rb
- cask/dsl/version.rb

View File

@ -1 +1 @@
3.4.3
3.4.4

View File

@ -11,13 +11,13 @@ GEM
coderay (1.1.3)
concurrent-ruby (1.3.5)
csv (3.3.4)
diff-lcs (1.6.1)
diff-lcs (1.6.2)
docile (1.4.1)
elftools (1.3.1)
bindata (~> 2)
erubi (1.13.1)
hana (1.3.7)
json (2.11.3)
json (2.12.0)
json_schemer (2.4.0)
bigdecimal
hana (~> 1.3)
@ -25,14 +25,14 @@ GEM
simpleidn (~> 0.2)
kramdown (2.5.1)
rexml (>= 3.3.9)
language_server-protocol (3.17.0.4)
language_server-protocol (3.17.0.5)
lint_roller (1.1.0)
logger (1.7.0)
method_source (1.1.0)
minitest (5.25.5)
netrc (0.11.0)
parallel (1.27.0)
parallel_tests (5.1.0)
parallel_tests (5.2.0)
parallel
parser (3.3.8.0)
ast (~> 2.4.1)
@ -44,15 +44,15 @@ GEM
pry (0.15.2)
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (6.0.1)
public_suffix (6.0.2)
pycall (1.5.2)
racc (1.8.1)
rainbow (3.1.1)
rbi (0.3.2)
rbi (0.3.3)
prism (~> 1.0)
rbs (>= 3.4.4)
sorbet-runtime (>= 0.5.9204)
rbs (3.9.2)
rbs (3.9.4)
logger
redcarpet (3.6.1)
regexp_parser (2.10.0)
@ -63,22 +63,22 @@ GEM
rspec-mocks (~> 3.13.0)
rspec-core (3.13.3)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.3)
rspec-expectations (3.13.4)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-github (3.0.0)
rspec-core (~> 3.0)
rspec-mocks (3.13.2)
rspec-mocks (3.13.4)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-sorbet (1.9.2)
sorbet-runtime
rspec-support (3.13.2)
rspec-support (3.13.3)
rspec_junit_formatter (0.6.0)
rspec-core (>= 2, < 4, != 2.12.0)
rubocop (1.75.2)
rubocop (1.75.6)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
@ -104,7 +104,7 @@ GEM
rubocop (~> 1.72, >= 1.72.1)
rubocop-sorbet (0.10.0)
rubocop (>= 1)
ruby-lsp (0.23.15)
ruby-lsp (0.23.21)
language_server-protocol (~> 3.17.0)
prism (>= 1.2, < 2.0)
rbs (>= 3, < 4)
@ -122,19 +122,20 @@ GEM
simplecov-html (0.13.1)
simplecov_json_formatter (0.1.4)
simpleidn (0.2.3)
sorbet (0.5.12043)
sorbet-static (= 0.5.12043)
sorbet-runtime (0.5.12043)
sorbet-static (0.5.12043-aarch64-linux)
sorbet-static (0.5.12043-universal-darwin)
sorbet-static (0.5.12043-x86_64-linux)
sorbet-static-and-runtime (0.5.12043)
sorbet (= 0.5.12043)
sorbet-runtime (= 0.5.12043)
spoom (1.6.1)
sorbet (0.5.12117)
sorbet-static (= 0.5.12117)
sorbet-runtime (0.5.12117)
sorbet-static (0.5.12117-aarch64-linux)
sorbet-static (0.5.12117-universal-darwin)
sorbet-static (0.5.12117-x86_64-linux)
sorbet-static-and-runtime (0.5.12117)
sorbet (= 0.5.12117)
sorbet-runtime (= 0.5.12117)
spoom (1.6.3)
erubi (>= 1.10.0)
prism (>= 0.28.0)
rbi (>= 0.2.3)
rbi (>= 0.3.3)
rexml (>= 3.2.6)
sorbet-static-and-runtime (>= 0.5.10187)
thor (>= 0.19.2)
stackprof (0.2.27)
@ -152,7 +153,7 @@ GEM
unicode-display_width (3.1.4)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
vernier (1.7.0)
vernier (1.7.1)
warning (1.5.0)
yard (0.9.37)
yard-sorbet (0.9.0)
@ -212,7 +213,7 @@ DEPENDENCIES
yard-sorbet
RUBY VERSION
ruby 3.4.3p32
ruby 3.4.4p34
BUNDLED WITH
2.6.7

View File

@ -39,12 +39,12 @@ class PATH
self
end
sig { params(block: T.proc.params(arg0: String).returns(T::Boolean)).returns(T.self_type) }
sig { params(block: T.proc.params(arg0: String).returns(BasicObject)).returns(T.self_type) }
def select(&block)
self.class.new(@paths.select(&block))
end
sig { params(block: T.proc.params(arg0: String).returns(T::Boolean)).returns(T.self_type) }
sig { params(block: T.proc.params(arg0: String).returns(BasicObject)).returns(T.self_type) }
def reject(&block)
self.class.new(@paths.reject(&block))
end

View File

@ -29,36 +29,36 @@ module Homebrew
Alias.new(name).remove
end
sig { params(only: T::Array[String], block: T.proc.params(target: String, cmd: String).void).void }
sig { params(only: T::Array[String], block: T.proc.params(name: String, command: String).void).void }
def self.each(only, &block)
Dir["#{HOMEBREW_ALIASES}/*"].each do |path|
next if path.end_with? "~" # skip Emacs-like backup files
next if File.directory?(path)
_shebang, _meta, *lines = File.readlines(path)
target = File.basename(path)
next if !only.empty? && only.exclude?(target)
_shebang, meta, *lines = File.readlines(path)
name = T.must(meta)[/alias: brew (\S+)/, 1] || File.basename(path)
next if !only.empty? && only.exclude?(name)
lines.reject! { |line| line.start_with?("#") || line =~ /^\s*$/ }
first_line = T.must(lines.first)
cmd = first_line.chomp
cmd.sub!(/ \$\*$/, "")
command = first_line.chomp
command.sub!(/ \$\*$/, "")
if cmd.start_with? "brew "
cmd.sub!(/^brew /, "")
if command.start_with? "brew "
command.sub!(/^brew /, "")
else
cmd = "!#{cmd}"
command = "!#{command}"
end
yield target, cmd if block.present?
yield name, command if block.present?
end
end
sig { params(aliases: String).void }
def self.show(*aliases)
each([*aliases]) do |target, cmd|
puts "brew alias #{target}='#{cmd}'"
existing_alias = Alias.new(target, cmd)
each([*aliases]) do |name, command|
puts "brew alias #{name}='#{command}'"
existing_alias = Alias.new(name, command)
existing_alias.link unless existing_alias.symlink.exist?
end
end

View File

@ -1,4 +1,4 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true
require "api/analytics"
@ -11,10 +11,10 @@ module Homebrew
module API
extend Cachable
HOMEBREW_CACHE_API = (HOMEBREW_CACHE/"api").freeze
HOMEBREW_CACHE_API_SOURCE = (HOMEBREW_CACHE/"api-source").freeze
HOMEBREW_CACHE_API = T.let((HOMEBREW_CACHE/"api").freeze, Pathname)
HOMEBREW_CACHE_API_SOURCE = T.let((HOMEBREW_CACHE/"api-source").freeze, Pathname)
sig { params(endpoint: String).returns(Hash) }
sig { params(endpoint: String).returns(T::Hash[String, T.untyped]) }
def self.fetch(endpoint)
return cache[endpoint] if cache.present? && cache.key?(endpoint)
@ -33,7 +33,8 @@ module Homebrew
end
sig {
params(endpoint: String, target: Pathname, stale_seconds: Integer).returns([T.any(Array, Hash), T::Boolean])
params(endpoint: String, target: Pathname,
stale_seconds: Integer).returns([T.any(T::Array[T.untyped], T::Hash[String, T.untyped]), T::Boolean])
}
def self.fetch_json_api_file(endpoint, target: HOMEBREW_CACHE_API/endpoint,
stale_seconds: Homebrew::EnvConfig.api_auto_update_secs.to_i)
@ -96,7 +97,8 @@ module Homebrew
mtime = insecure_download ? Time.new(1970, 1, 1) : Time.now
FileUtils.touch(target, mtime:) unless skip_download
JSON.parse(target.read, freeze: true)
# Can use `target.read` again when/if https://github.com/sorbet/sorbet/pull/8999 is merged/released.
JSON.parse(File.read(target, encoding: Encoding::UTF_8), freeze: true)
rescue JSON::ParserError
target.unlink
retry_count += 1
@ -122,14 +124,17 @@ module Homebrew
end
end
sig { params(json: Hash).returns(Hash) }
def self.merge_variations(json)
sig {
params(json: T::Hash[String, T.untyped],
bottle_tag: ::Utils::Bottles::Tag).returns(T::Hash[String, T.untyped])
}
def self.merge_variations(json, bottle_tag: T.unsafe(nil))
return json unless json.key?("variations")
bottle_tag = ::Utils::Bottles::Tag.new(system: Homebrew::SimulateSystem.current_os,
arch: Homebrew::SimulateSystem.current_arch)
bottle_tag ||= Homebrew::SimulateSystem.current_tag
if (variation = json.dig("variations", bottle_tag.to_s).presence)
if (variation = json.dig("variations", bottle_tag.to_s).presence) ||
(variation = json.dig("variations", bottle_tag.to_sym).presence)
json = json.merge(variation)
end
@ -147,7 +152,10 @@ module Homebrew
false
end
sig { params(json_data: Hash).returns([T::Boolean, T.any(String, Array, Hash)]) }
sig {
params(json_data: T::Hash[String, T.untyped])
.returns([T::Boolean, T.any(String, T::Array[T.untyped], T::Hash[String, T.untyped])])
}
private_class_method def self.verify_and_parse_jws(json_data)
signatures = json_data["signatures"]
homebrew_signature = signatures&.find { |sig| sig.dig("header", "kid") == "homebrew-1" }

View File

@ -10,7 +10,6 @@ module Homebrew
def analytics_api_path
"analytics"
end
alias generic_analytics_api_path analytics_api_path
sig { params(category: String, days: T.any(Integer, String)).returns(T::Hash[String, T.untyped]) }
def fetch(category, days)

View File

@ -1,7 +1,7 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true
require "extend/cachable"
require "cachable"
require "api/download"
module Homebrew
@ -12,9 +12,16 @@ module Homebrew
DEFAULT_API_FILENAME = "cask.jws.json"
sig { returns(String) }
def self.api_filename
return DEFAULT_API_FILENAME unless ENV.fetch("HOMEBREW_USE_INTERNAL_API", false)
"cask.#{SimulateSystem.current_tag}.jws.json"
end
private_class_method :cache
sig { params(token: String).returns(Hash) }
sig { params(token: String).returns(T::Hash[String, T.untyped]) }
def self.fetch(token)
Homebrew::API.fetch "cask/#{token}.json"
end
@ -40,13 +47,14 @@ module Homebrew
.load(config: cask.config)
end
sig { returns(Pathname) }
def self.cached_json_file_path
HOMEBREW_CACHE_API/DEFAULT_API_FILENAME
HOMEBREW_CACHE_API/api_filename
end
sig { returns(T::Boolean) }
def self.download_and_cache_data!
json_casks, updated = Homebrew::API.fetch_json_api_file DEFAULT_API_FILENAME
json_casks, updated = Homebrew::API.fetch_json_api_file api_filename
cache["renames"] = {}
cache["casks"] = json_casks.to_h do |json_cask|
@ -63,7 +71,7 @@ module Homebrew
end
private_class_method :download_and_cache_data!
sig { returns(T::Hash[String, Hash]) }
sig { returns(T::Hash[String, T::Hash[String, T.untyped]]) }
def self.all_casks
unless cache.key?("casks")
json_updated = download_and_cache_data!

View File

@ -1,7 +1,7 @@
# typed: strict
# frozen_string_literal: true
require "extend/cachable"
require "cachable"
require "api/download"
module Homebrew
@ -12,6 +12,13 @@ module Homebrew
DEFAULT_API_FILENAME = "formula.jws.json"
sig { returns(String) }
def self.api_filename
return DEFAULT_API_FILENAME unless ENV.fetch("HOMEBREW_USE_INTERNAL_API", false)
"internal/formula.#{SimulateSystem.current_tag}.jws.json"
end
private_class_method :cache
sig { params(name: String).returns(T::Hash[String, T.untyped]) }
@ -42,12 +49,12 @@ module Homebrew
sig { returns(Pathname) }
def self.cached_json_file_path
HOMEBREW_CACHE_API/DEFAULT_API_FILENAME
HOMEBREW_CACHE_API/api_filename
end
sig { returns(T::Boolean) }
def self.download_and_cache_data!
json_formulae, updated = Homebrew::API.fetch_json_api_file DEFAULT_API_FILENAME
json_formulae, updated = Homebrew::API.fetch_json_api_file api_filename
cache["aliases"] = {}
cache["renames"] = {}

View File

@ -1,22 +1,26 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true
# Used to substitute common paths with generic placeholders when generating JSON for the API.
module APIHashable
sig { void }
def generating_hash!
return if generating_hash?
# Apply monkeypatches for API generation
@old_homebrew_prefix = HOMEBREW_PREFIX
@old_homebrew_cellar = HOMEBREW_CELLAR
@old_home = Dir.home
@old_homebrew_prefix = T.let(HOMEBREW_PREFIX, T.nilable(Pathname))
@old_homebrew_cellar = T.let(HOMEBREW_CELLAR, T.nilable(Pathname))
@old_home = T.let(Dir.home, T.nilable(String))
@old_git_config_global = T.let(ENV.fetch("GIT_CONFIG_GLOBAL", nil), T.nilable(String))
Object.send(:remove_const, :HOMEBREW_PREFIX)
Object.const_set(:HOMEBREW_PREFIX, Pathname.new(HOMEBREW_PREFIX_PLACEHOLDER))
ENV["HOME"] = HOMEBREW_HOME_PLACEHOLDER
ENV["GIT_CONFIG_GLOBAL"] = File.join(@old_home, ".gitconfig")
@generating_hash = true
@generating_hash = T.let(true, T.nilable(T::Boolean))
end
sig { void }
def generated_hash!
return unless generating_hash?
@ -24,10 +28,12 @@ module APIHashable
Object.send(:remove_const, :HOMEBREW_PREFIX)
Object.const_set(:HOMEBREW_PREFIX, @old_homebrew_prefix)
ENV["HOME"] = @old_home
ENV["GIT_CONFIG_GLOBAL"] = @old_git_config_global
@generating_hash = false
end
sig { returns(T::Boolean) }
def generating_hash?
@generating_hash ||= false
@generating_hash == true

View File

@ -17,6 +17,7 @@ FORMULA_COMPONENT_PRECEDENCE_LIST = T.let([
[{ name: :head, type: :method_call }],
[{ name: :stable, type: :block_call }],
[{ name: :livecheck, type: :block_call }],
[{ name: :no_autobump!, type: :method_call }],
[{ name: :bottle, type: :block_call }],
[{ name: :pour_bottle?, type: :block_call }],
[{ name: :head, type: :block_call }],
@ -51,4 +52,4 @@ FORMULA_COMPONENT_PRECEDENCE_LIST = T.let([
[{ name: :caveats, type: :method_definition }],
[{ name: :plist_options, type: :method_call }, { name: :plist, type: :method_definition }],
[{ name: :test, type: :block_call }],
].freeze, T::Array[[{ name: Symbol, type: Symbol }]])
].freeze, T::Array[T::Array[{ name: Symbol, type: Symbol }]])

View File

@ -64,12 +64,8 @@ module Homebrew
sig { returns(T::Boolean) }
def self.enabled?
return false if Homebrew::EnvConfig.no_verify_attestations?
return true if Homebrew::EnvConfig.verify_attestations?
return false if ENV.fetch("CI", false)
return false if OS.not_tier_one_configuration?
# Always check credentials last to avoid unnecessary credential extraction.
(Homebrew::EnvConfig.developer? || Homebrew::EnvConfig.devcmdrun?) && GitHub::API.credentials.present?
Homebrew::EnvConfig.verify_attestations?
end
# Returns a path to a suitable `gh` executable for attestation verification.

View File

@ -0,0 +1,15 @@
# typed: strict
# frozen_string_literal: true
NO_AUTOBUMP_REASONS_INTERNAL = T.let({
extract_plist: "livecheck uses `:extract_plist` strategy",
latest_version: "`version` is set to `:latest`",
}.freeze, T::Hash[Symbol, String])
# The valid symbols for passing to `no_autobump!` in a `Formula` or `Cask`.
# @api public
NO_AUTOBUMP_REASONS_LIST = T.let({
incompatible_version_format: "incompatible version format",
bumped_by_upstream: "bumped by upstream",
requires_manual_review: "a manual review of this package is required for inclusion in autobump",
}.merge(NO_AUTOBUMP_REASONS_INTERNAL).freeze, T::Hash[Symbol, String])

View File

@ -256,7 +256,14 @@ check-run-command-as-root() {
[[ -f /proc/1/cgroup ]] && grep -E "azpl_job|actions_job|docker|garden|kubepods" -q /proc/1/cgroup && return
# `brew services` may need `sudo` for system-wide daemons.
[[ "${HOMEBREW_COMMAND}" == "services" ]] && return
if [[ "${HOMEBREW_COMMAND}" == "services" ]]
then
# Need to disable Bootsnap when running as root to avoid permission errors:
# https://github.com/Homebrew/brew/issues/19904
export HOMEBREW_NO_BOOTSNAP="1"
return
fi
# It's fine to run this as root as it's not changing anything.
[[ "${HOMEBREW_COMMAND}" == "--prefix" ]] && return
@ -465,7 +472,7 @@ fi
#####
# Docker image deprecation
if [[ -f "${HOMEBREW_REPOSITORY}/.docker-deprecate" ]]
if [[ -f "${HOMEBREW_REPOSITORY}/.docker-deprecate" && -z "${HOMEBREW_TESTS}" ]]
then
read -r DOCKER_DEPRECATION_MESSAGE <"${HOMEBREW_REPOSITORY}/.docker-deprecate"
if [[ -n "${GITHUB_ACTIONS}" ]]
@ -524,9 +531,9 @@ GIT_REVISION=$("${HOMEBREW_GIT}" -C "${HOMEBREW_REPOSITORY}" rev-parse HEAD 2>/d
if [[ -z "${GIT_REVISION}" ]]
then
read -r GIT_HEAD 2>/dev/null <"${HOMEBREW_REPOSITORY}/.git/HEAD"
if [[ "${GIT_HEAD}" == "ref: refs/heads/master" ]]
if [[ "${GIT_HEAD}" == "ref: refs/heads/main" ]]
then
read -r GIT_REVISION 2>/dev/null <"${HOMEBREW_REPOSITORY}/.git/refs/heads/master"
read -r GIT_REVISION 2>/dev/null <"${HOMEBREW_REPOSITORY}/.git/refs/heads/main"
elif [[ "${GIT_HEAD}" == "ref: refs/heads/stable" ]]
then
read -r GIT_REVISION 2>/dev/null <"${HOMEBREW_REPOSITORY}/.git/refs/heads/stable"
@ -593,6 +600,11 @@ case "$1" in
homebrew-version
exit 0
;;
mcp-server)
source "${HOMEBREW_LIBRARY}/Homebrew/cmd/mcp-server.sh"
homebrew-mcp-server "$@"
exit 0
;;
esac
# TODO: bump version when new macOS is released or announced and update references in:
@ -602,6 +614,8 @@ esac
# and, if needed:
# - MacOSVersion::SYMBOLS
HOMEBREW_MACOS_NEWEST_UNSUPPORTED="16"
# TODO: bump version when new macOS is released
HOMEBREW_MACOS_NEWEST_SUPPORTED="15"
# TODO: bump version when new macOS is released and update references in:
# - docs/Installation.md
# - HOMEBREW_MACOS_OLDEST_SUPPORTED in .github/workflows/pkg-installer.yml
@ -829,6 +843,7 @@ export HOMEBREW_OS_VERSION
export HOMEBREW_MACOS_VERSION
export HOMEBREW_MACOS_VERSION_NUMERIC
export HOMEBREW_MACOS_NEWEST_UNSUPPORTED
export HOMEBREW_MACOS_NEWEST_SUPPORTED
export HOMEBREW_MACOS_OLDEST_SUPPORTED
export HOMEBREW_MACOS_OLDEST_ALLOWED
export HOMEBREW_USER_AGENT
@ -1071,6 +1086,22 @@ else
export HOMEBREW_GITHUB_PACKAGES_AUTH="Bearer QQ=="
fi
# Avoid picking up any random `sudo` in `PATH`.
if [[ -x /usr/bin/sudo ]]
then
SUDO=/usr/bin/sudo
else
# Do this after ensuring we're using default Bash builtins.
SUDO="$(command -v sudo 2>/dev/null)"
fi
# Reset sudo timestamp to avoid running unauthorized sudo commands
if [[ -n "${SUDO}" ]]
then
"${SUDO}" --reset-timestamp 2>/dev/null || true
fi
unset SUDO
if [[ -n "${HOMEBREW_BASH_COMMAND}" ]]
then
# source rather than executing directly to ensure the entire file is read into

View File

@ -130,6 +130,9 @@ module Homebrew
@formula_versions_from_env[formula_env_name]
end
sig { void }
def prepend_pkgconf_path_if_needed!; end
sig { void }
def reset!
@mas_installed = T.let(nil, T.nilable(T::Boolean))

View File

@ -11,6 +11,9 @@ module Homebrew
sig { params(args: String, type: Symbol, global: T::Boolean, file: String).void }
def add(*args, type:, global:, file:)
brewfile_path = Brewfile.path(global:, file:)
brewfile_path.write("") unless brewfile_path.exist?
brewfile = Brewfile.read(global:, file:)
content = brewfile.input
# TODO: - support `:describe`

View File

@ -1,7 +1,7 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
require "bundle/brew_installer"
require "bundle/formula_installer"
module Homebrew
module Bundle
@ -11,7 +11,7 @@ module Homebrew
PACKAGE_TYPE_NAME = "Formula"
def installed_and_up_to_date?(formula, no_upgrade: false)
Homebrew::Bundle::BrewInstaller.formula_installed_and_up_to_date?(formula, no_upgrade:)
Homebrew::Bundle::FormulaInstaller.formula_installed_and_up_to_date?(formula, no_upgrade:)
end
end
end

View File

@ -24,8 +24,8 @@ module Homebrew
end
def entry_to_formula(entry)
require "bundle/brew_installer"
Homebrew::Bundle::BrewInstaller.new(entry.name, entry.options)
require "bundle/formula_installer"
Homebrew::Bundle::FormulaInstaller.new(entry.name, entry.options)
end
def formula_needs_to_start?(formula)
@ -38,8 +38,8 @@ module Homebrew
end
def lookup_old_name(service_name)
require "bundle/brew_dumper"
@old_names ||= Homebrew::Bundle::BrewDumper.formula_oldnames
require "bundle/formula_dumper"
@old_names ||= Homebrew::Bundle::FormulaDumper.formula_oldnames
old_name = @old_names[service_name]
old_name ||= @old_names[service_name.split("/").last]
old_name

View File

@ -8,6 +8,7 @@ module Homebrew
@casks = nil
@cask_names = nil
@cask_hash = nil
@cask_oldnames = nil
end
def self.cask_names
@ -38,6 +39,25 @@ module Homebrew
end.join("\n")
end
def self.cask_oldnames
return @cask_oldnames if @cask_oldnames
@cask_oldnames = {}
casks.each do |c|
oldnames = c.old_tokens
next if oldnames.blank?
oldnames.each do |oldname|
@cask_oldnames[oldname] = c.full_name
if c.full_name.include? "/" # tap cask
tap_name = c.full_name.rpartition("/").first
@cask_oldnames["#{tap_name}/#{oldname}"] = c.full_name
end
end
end
@cask_oldnames
end
def self.formula_dependencies(cask_list)
return [] unless Bundle.cask_installed?
return [] if cask_list.blank?

View File

@ -41,7 +41,7 @@ module Homebrew
case v
when TrueClass
"--#{k}"
when FalseClass
when FalseClass, NilClass
nil
else
"--#{k}=#{v}"
@ -87,12 +87,25 @@ module Homebrew
!cask_upgradable?(cask)
end
def self.cask_in_array?(cask, array)
return true if array.include?(cask)
return true if array.include?(cask.split("/").last)
require "bundle/cask_dumper"
old_names = Homebrew::Bundle::CaskDumper.cask_oldnames
old_name = old_names[cask]
old_name ||= old_names[cask.split("/").last]
return true if old_name && array.include?(old_name)
false
end
def self.cask_installed?(cask)
installed_casks.include? cask
cask_in_array?(cask, installed_casks)
end
def self.cask_upgradable?(cask)
outdated_casks.include? cask
cask_in_array?(cask, outdated_casks)
end
def self.installed_casks

View File

@ -1,4 +1,4 @@
# typed: false # rubocop:todo Sorbet/TrueSigil
# typed: true
# frozen_string_literal: true
module Homebrew
@ -23,7 +23,7 @@ module Homebrew
else
"needs to be installed or updated."
end
"#{self.class::PACKAGE_TYPE_NAME} #{name} #{reason}"
"#{self.class.const_get(:PACKAGE_TYPE_NAME)} #{name} #{reason}"
end
def full_check(packages, no_upgrade:)
@ -33,7 +33,7 @@ module Homebrew
def checkable_entries(all_entries)
require "bundle/skipper"
all_entries.select { |e| e.type == self.class::PACKAGE_TYPE }
all_entries.select { |e| e.type == self.class.const_get(:PACKAGE_TYPE) }
.reject(&Bundle::Skipper.method(:skip?))
end
@ -139,14 +139,14 @@ module Homebrew
def self.reset!
require "bundle/cask_dumper"
require "bundle/brew_dumper"
require "bundle/formula_dumper"
require "bundle/mac_app_store_dumper"
require "bundle/tap_dumper"
require "bundle/brew_services"
@dsl = nil
Homebrew::Bundle::CaskDumper.reset!
Homebrew::Bundle::BrewDumper.reset!
Homebrew::Bundle::FormulaDumper.reset!
Homebrew::Bundle::MacAppStoreDumper.reset!
Homebrew::Bundle::TapDumper.reset!
Homebrew::Bundle::BrewServices.reset!

View File

@ -1,4 +1,4 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true
require "bundle/adder"
@ -7,6 +7,7 @@ module Homebrew
module Bundle
module Commands
module Add
sig { params(args: String, type: Symbol, global: T::Boolean, file: T.nilable(String)).void }
def self.run(*args, type:, global:, file:)
Homebrew::Bundle::Adder.add(*args, type:, global:, file:)
end

View File

@ -10,7 +10,7 @@ module Homebrew
module Cleanup
def self.reset!
require "bundle/cask_dumper"
require "bundle/brew_dumper"
require "bundle/formula_dumper"
require "bundle/tap_dumper"
require "bundle/vscode_extension_dumper"
require "bundle/brew_services"
@ -19,19 +19,20 @@ module Homebrew
@kept_casks = nil
@kept_formulae = nil
Homebrew::Bundle::CaskDumper.reset!
Homebrew::Bundle::BrewDumper.reset!
Homebrew::Bundle::FormulaDumper.reset!
Homebrew::Bundle::TapDumper.reset!
Homebrew::Bundle::VscodeExtensionDumper.reset!
Homebrew::Bundle::BrewServices.reset!
end
def self.run(global: false, file: nil, force: false, zap: false, dsl: nil)
def self.run(global: false, file: nil, force: false, zap: false, dsl: nil,
formulae: true, casks: true, taps: true, vscode: true)
@dsl ||= dsl
casks = casks_to_uninstall(global:, file:)
formulae = formulae_to_uninstall(global:, file:)
taps = taps_to_untap(global:, file:)
vscode_extensions = vscode_extensions_to_uninstall(global:, file:)
casks = casks ? casks_to_uninstall(global:, file:) : []
formulae = formulae ? formulae_to_uninstall(global:, file:) : []
taps = taps ? taps_to_untap(global:, file:) : []
vscode_extensions = vscode ? vscode_extensions_to_uninstall(global:, file:) : []
if force
if casks.any?
args = zap ? ["--zap"] : []
@ -100,11 +101,11 @@ module Homebrew
def self.formulae_to_uninstall(global: false, file: nil)
kept_formulae = self.kept_formulae(global:, file:)
require "bundle/brew_dumper"
require "bundle/brew_installer"
current_formulae = Homebrew::Bundle::BrewDumper.formulae
require "bundle/formula_dumper"
require "bundle/formula_installer"
current_formulae = Homebrew::Bundle::FormulaDumper.formulae
current_formulae.reject! do |f|
Homebrew::Bundle::BrewInstaller.formula_in_array?(f[:full_name], kept_formulae)
Homebrew::Bundle::FormulaInstaller.formula_in_array?(f[:full_name], kept_formulae)
end
# Don't try to uninstall formulae with keepme references
@ -118,7 +119,7 @@ module Homebrew
private_class_method def self.kept_formulae(global: false, file: nil)
require "bundle/brewfile"
require "bundle/brew_dumper"
require "bundle/formula_dumper"
require "bundle/cask_dumper"
@kept_formulae ||= begin
@ -127,12 +128,13 @@ module Homebrew
kept_formulae = @dsl.entries.select { |e| e.type == :brew }.map(&:name)
kept_formulae += Homebrew::Bundle::CaskDumper.formula_dependencies(kept_casks)
kept_formulae.map! do |f|
Homebrew::Bundle::BrewDumper.formula_aliases[f] ||
Homebrew::Bundle::BrewDumper.formula_oldnames[f] ||
f
Homebrew::Bundle::FormulaDumper.formula_aliases.fetch(
f,
Homebrew::Bundle::FormulaDumper.formula_oldnames.fetch(f, f),
)
end
kept_formulae + recursive_dependencies(Homebrew::Bundle::BrewDumper.formulae, kept_formulae)
kept_formulae + recursive_dependencies(Homebrew::Bundle::FormulaDumper.formulae, kept_formulae)
end
end
@ -141,7 +143,11 @@ module Homebrew
return @kept_casks if @kept_casks
@dsl ||= Brewfile.read(global:, file:)
@kept_casks = @dsl.entries.select { |e| e.type == :cask }.map(&:name)
kept_casks = @dsl.entries.select { |e| e.type == :cask }.flat_map(&:name)
kept_casks.map! do |c|
Homebrew::Bundle::CaskDumper.cask_oldnames.fetch(c, c)
end
@kept_casks = kept_casks
end
private_class_method def self.recursive_dependencies(current_formulae, formulae_names, top_level: true)

View File

@ -7,9 +7,10 @@ module Homebrew
module Bundle
module Commands
module Dump
def self.run(global:, file:, describe:, force:, no_restart:, taps:, brews:, casks:, mas:, whalebrew:, vscode:)
def self.run(global:, file:, describe:, force:, no_restart:, taps:, formulae:, casks:, mas:, whalebrew:,
vscode:)
Homebrew::Bundle::Dumper.dump_brewfile(
global:, file:, describe:, force:, no_restart:, taps:, brews:, casks:, mas:, whalebrew:, vscode:,
global:, file:, describe:, force:, no_restart:, taps:, formulae:, casks:, mas:, whalebrew:, vscode:,
)
end
end

View File

@ -1,4 +1,4 @@
# typed: false # rubocop:todo Sorbet/TrueSigil
# typed: true
# frozen_string_literal: true
require "English"
@ -13,6 +13,16 @@ module Homebrew
module Exec
PATH_LIKE_ENV_REGEX = /.+#{File::PATH_SEPARATOR}/
sig {
params(
args: String,
global: T::Boolean,
file: T.nilable(String),
subcommand: String,
services: T::Boolean,
check: T::Boolean,
).void
}
def self.run(*args, global: false, file: nil, subcommand: "", services: false, check: false)
if check
require "bundle/commands/check"
@ -25,9 +35,9 @@ module Homebrew
# Setup Homebrew's ENV extensions
ENV.activate_extensions!
raise UsageError, "No command to execute was specified!" if args.blank?
command = args.first
raise UsageError, "No command to execute was specified!" if command.blank?
require "bundle/brewfile"
@dsl = Brewfile.read(global:, file:)
@ -64,14 +74,8 @@ module Homebrew
ENV.prepend_path "PATH", Pathname.new(dep_root)/"shims"
end
# Setup pkg-config, if present, to help locate packages
# Only need this on Linux as Homebrew provides a shim on macOS
# TODO: use extend/OS here
# rubocop:todo Homebrew/MoveToExtendOS
if OS.linux? && (pkgconf = Formulary.factory("pkgconf")) && pkgconf.any_version_installed?
ENV.prepend_path "PATH", pkgconf.opt_bin.to_s
end
# rubocop:enable Homebrew/MoveToExtendOS
# Setup pkgconf, if needed, to help locate packages
Bundle.prepend_pkgconf_path_if_needed!
# For commands which aren't either absolute or relative
# Add the command directory to PATH, since it may get blown away by superenv
@ -170,15 +174,29 @@ module Homebrew
end
end
return
elsif subcommand == "sh"
preferred_path = Utils::Shell.preferred_path(default: "/bin/bash")
notice = unless Homebrew::EnvConfig.no_env_hints?
<<~EOS
Your shell has been configured to use a build environment from your `Brewfile`.
This should help you build stuff.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
When done, type `exit`.
EOS
end
ENV["HOMEBREW_FORCE_API_AUTO_UPDATE"] = nil
args = [Utils::Shell.shell_with_prompt("brew bundle", preferred_path:, notice:)]
end
if services
require "bundle/brew_services"
exit_code = 0
exit_code = T.let(0, Integer)
run_services(@dsl.entries) do
Kernel.system(*args)
exit_code = $CHILD_STATUS.exitstatus
if (system_exit_code = $CHILD_STATUS&.exitstatus)
exit_code = system_exit_code
end
end
exit!(exit_code)
else
@ -191,7 +209,7 @@ module Homebrew
entries: T::Array[Homebrew::Bundle::Dsl::Entry],
_block: T.proc.params(
entry: Homebrew::Bundle::Dsl::Entry,
info: T::Hash[String, T.anything],
info: T::Hash[String, T.untyped],
service_file: Pathname,
conflicting_services: T::Array[T::Hash[String, T.anything]],
).void,
@ -271,7 +289,7 @@ module Homebrew
map_service_info(entries) do |entry, info, service_file, conflicting_services|
# Don't restart if already running this version
loaded_file = Pathname.new(info["loaded_file"].to_s)
next if info["running"] && loaded_file&.file? && loaded_file&.realpath == service_file.realpath
next if info["running"] && loaded_file.file? && loaded_file.realpath == service_file.realpath
if info["running"] && !Bundle::BrewServices.stop(info["name"], keep: true)
opoo "Failed to stop #{info["name"]} service"

View File

@ -8,11 +8,11 @@ module Homebrew
module Bundle
module Commands
module List
def self.run(global:, file:, brews:, casks:, taps:, mas:, whalebrew:, vscode:)
def self.run(global:, file:, formulae:, casks:, taps:, mas:, whalebrew:, vscode:)
parsed_entries = Brewfile.read(global:, file:).entries
Homebrew::Bundle::Lister.list(
parsed_entries,
brews:, casks:, taps:, mas:, whalebrew:, vscode:,
formulae:, casks:, taps:, mas:, whalebrew:, vscode:,
)
end
end

View File

@ -42,7 +42,7 @@ module Homebrew
def cask_args(args)
raise "cask_args(#{args.inspect}) should be a Hash object" unless args.is_a? Hash
@cask_arguments = args
@cask_arguments.merge!(args)
end
def brew(name, options = {})

View File

@ -13,9 +13,9 @@ module Homebrew
true
end
def self.build_brewfile(describe:, no_restart:, brews:, taps:, casks:, mas:, whalebrew:, vscode:)
def self.build_brewfile(describe:, no_restart:, formulae:, taps:, casks:, mas:, whalebrew:, vscode:)
require "bundle/tap_dumper"
require "bundle/brew_dumper"
require "bundle/formula_dumper"
require "bundle/cask_dumper"
require "bundle/mac_app_store_dumper"
require "bundle/whalebrew_dumper"
@ -23,7 +23,7 @@ module Homebrew
content = []
content << TapDumper.dump if taps
content << BrewDumper.dump(describe:, no_restart:) if brews
content << FormulaDumper.dump(describe:, no_restart:) if formulae
content << CaskDumper.dump(describe:) if casks
content << MacAppStoreDumper.dump if mas
content << WhalebrewDumper.dump if whalebrew
@ -31,11 +31,11 @@ module Homebrew
"#{content.reject(&:empty?).join("\n")}\n"
end
def self.dump_brewfile(global:, file:, describe:, force:, no_restart:, brews:, taps:, casks:, mas:, whalebrew:,
vscode:)
def self.dump_brewfile(global:, file:, describe:, force:, no_restart:, formulae:, taps:, casks:, mas:,
whalebrew:, vscode:)
path = brewfile_path(global:, file:)
can_write_to_brewfile?(path, force:)
content = build_brewfile(describe:, no_restart:, taps:, brews:, casks:, mas:, whalebrew:, vscode:)
content = build_brewfile(describe:, no_restart:, taps:, formulae:, casks:, mas:, whalebrew:, vscode:)
write_file path, content
end

View File

@ -1,4 +1,4 @@
# typed: false # rubocop:todo Sorbet/TrueSigil
# typed: true
# frozen_string_literal: true
require "json"
@ -7,10 +7,8 @@ require "tsort"
module Homebrew
module Bundle
# TODO: refactor into multiple modules
module BrewDumper
module_function
def reset!
module FormulaDumper
def self.reset!
require "bundle/brew_services"
Homebrew::Bundle::BrewServices.reset!
@ -21,14 +19,14 @@ module Homebrew
@formula_oldnames = nil
end
def formulae
def self.formulae
return @formulae if @formulae
formulae_by_full_name
@formulae
end
def formulae_by_full_name(name = nil)
def self.formulae_by_full_name(name = nil)
return @formulae_by_full_name[name] if name.present? && @formulae_by_full_name&.key?(name)
require "formula"
@ -51,11 +49,11 @@ module Homebrew
{}
end
def formulae_by_name(name)
def self.formulae_by_name(name)
formulae_by_full_name(name) || @formulae_by_name[name]
end
def dump(describe: false, no_restart: false)
def self.dump(describe: false, no_restart: false)
require "bundle/brew_services"
requested_formula = formulae.select do |f|
@ -77,7 +75,7 @@ module Homebrew
end.join("\n")
end
def formula_aliases
def self.formula_aliases
return @formula_aliases if @formula_aliases
@formula_aliases = {}
@ -96,7 +94,7 @@ module Homebrew
@formula_aliases
end
def formula_oldnames
def self.formula_oldnames
return @formula_oldnames if @formula_oldnames
@formula_oldnames = {}
@ -115,7 +113,7 @@ module Homebrew
@formula_oldnames
end
def add_formula(formula)
private_class_method def self.add_formula(formula)
hash = formula_to_hash formula
@formulae_by_name[hash[:name]] = hash
@ -123,9 +121,8 @@ module Homebrew
hash
end
private_class_method :add_formula
def formula_to_hash(formula)
private_class_method def self.formula_to_hash(formula)
keg = if formula.linked?
link = true if formula.keg_only?
formula.linked_keg
@ -185,17 +182,21 @@ module Homebrew
official_tap: formula.tap&.official? || false,
}
end
private_class_method :formula_to_hash
class Topo < Hash
include TSort
def each_key(&block)
keys.each(&block)
end
alias tsort_each_node each_key
def tsort_each_child(node, &block)
fetch(node.downcase).sort.each(&block)
end
end
def sort!(formulae)
private_class_method def self.sort!(formulae)
# Step 1: Sort by formula full name while putting tap formulae behind core formulae.
# So we can have a nicer output.
formulae = formulae.sort do |a, b|
@ -230,15 +231,14 @@ module Homebrew
odie <<~EOS
Formulae dependency graph sorting failed (likely due to a circular dependency):
#{cycle_first}: #{topo[cycle_first]}
#{cycle_last}: #{topo[cycle_last]}
#{cycle_first}: #{topo[cycle_first] if topo}
#{cycle_last}: #{topo[cycle_last] if topo}
Please run the following commands and try again:
brew update
brew uninstall --ignore-dependencies --force #{cycle_first} #{cycle_last}
brew install #{cycle_first} #{cycle_last}
EOS
end
private_class_method :sort!
end
end
end

View File

@ -3,7 +3,7 @@
module Homebrew
module Bundle
class BrewInstaller
class FormulaInstaller
def self.reset!
@installed_formulae = nil
@outdated_formulae = nil
@ -179,13 +179,13 @@ module Homebrew
return true if array.include?(formula)
return true if array.include?(formula.split("/").last)
require "bundle/brew_dumper"
old_names = Homebrew::Bundle::BrewDumper.formula_oldnames
require "bundle/formula_dumper"
old_names = Homebrew::Bundle::FormulaDumper.formula_oldnames
old_name = old_names[formula]
old_name ||= old_names[formula.split("/").last]
return true if old_name && array.include?(old_name)
resolved_full_name = Homebrew::Bundle::BrewDumper.formula_aliases[formula]
resolved_full_name = Homebrew::Bundle::FormulaDumper.formula_aliases[formula]
return false unless resolved_full_name
return true if array.include?(resolved_full_name)
return true if array.include?(resolved_full_name.split("/").last)
@ -219,14 +219,14 @@ module Homebrew
end
def self.formulae
require "bundle/brew_dumper"
Homebrew::Bundle::BrewDumper.formulae
require "bundle/formula_dumper"
Homebrew::Bundle::FormulaDumper.formulae
end
private
def installed?
BrewInstaller.formula_installed?(@name)
FormulaInstaller.formula_installed?(@name)
end
def linked?
@ -242,7 +242,7 @@ module Homebrew
end
def upgradable?
BrewInstaller.formula_upgradable?(@name)
FormulaInstaller.formula_upgradable?(@name)
end
def conflicts_with
@ -250,8 +250,8 @@ module Homebrew
conflicts_with = Set.new
conflicts_with += @conflicts_with_arg
require "bundle/brew_dumper"
if (formula = Homebrew::Bundle::BrewDumper.formulae_by_full_name(@full_name)) &&
require "bundle/formula_dumper"
if (formula = Homebrew::Bundle::FormulaDumper.formulae_by_full_name(@full_name)) &&
(formula_conflicts_with = formula[:conflicts_with])
conflicts_with += formula_conflicts_with
end
@ -262,7 +262,7 @@ module Homebrew
def resolve_conflicts!(verbose:)
conflicts_with.each do |conflict|
next unless BrewInstaller.formula_installed?(conflict)
next unless FormulaInstaller.formula_installed?(conflict)
if verbose
puts <<~EOS
@ -293,7 +293,7 @@ module Homebrew
return false
end
BrewInstaller.installed_formulae << @name
FormulaInstaller.installed_formulae << @name
@changed = true
true
end

View File

@ -2,7 +2,7 @@
# frozen_string_literal: true
require "bundle/dsl"
require "bundle/brew_installer"
require "bundle/formula_installer"
require "bundle/cask_installer"
require "bundle/mac_app_store_installer"
require "bundle/whalebrew_installer"
@ -27,8 +27,8 @@ module Homebrew
cls = case type
when :brew
options = entry.options
verb = "Upgrading" if Homebrew::Bundle::BrewInstaller.formula_upgradable?(name)
Homebrew::Bundle::BrewInstaller
verb = "Upgrading" if Homebrew::Bundle::FormulaInstaller.formula_upgradable?(name)
Homebrew::Bundle::FormulaInstaller
when :cask
options = entry.options
verb = "Upgrading" if Homebrew::Bundle::CaskInstaller.cask_upgradable?(name)

View File

@ -4,14 +4,14 @@
module Homebrew
module Bundle
module Lister
def self.list(entries, brews:, casks:, taps:, mas:, whalebrew:, vscode:)
def self.list(entries, formulae:, casks:, taps:, mas:, whalebrew:, vscode:)
entries.each do |entry|
puts entry.name if show?(entry.type, brews:, casks:, taps:, mas:, whalebrew:, vscode:)
puts entry.name if show?(entry.type, formulae:, casks:, taps:, mas:, whalebrew:, vscode:)
end
end
private_class_method def self.show?(type, brews:, casks:, taps:, mas:, whalebrew:, vscode:)
return true if brews && type == :brew
private_class_method def self.show?(type, formulae:, casks:, taps:, mas:, whalebrew:, vscode:)
return true if formulae && type == :brew
return true if casks && type == :cask
return true if taps && type == :tap
return true if mas && type == :mas

View File

@ -9,21 +9,8 @@ module Homebrew
class << self
sig { params(entry: Dsl::Entry, silent: T::Boolean).returns(T::Boolean) }
def skip?(entry, silent: false)
require "bundle/brew_dumper"
require "bundle/formula_dumper"
# TODO: use extend/OS here
# rubocop:todo Homebrew/MoveToExtendOS
if (Hardware::CPU.arm? || OS.linux?) &&
Homebrew.default_prefix? &&
entry.type == :brew && entry.name.exclude?("/") &&
(formula = BrewDumper.formulae_by_full_name(entry.name)) &&
formula[:official_tap] &&
!formula[:bottled]
reason = Hardware::CPU.arm? ? "Apple Silicon" : "Linux"
puts Formatter.warning "Skipping #{entry.name} (no bottle for #{reason})" unless silent
return true
end
# rubocop:enable Homebrew/MoveToExtendOS
return true if @failed_taps&.any? do |tap|
prefix = "#{tap}/"
entry.name.start_with?(prefix) || entry.options[:full_name]&.start_with?(prefix)

View File

@ -19,7 +19,6 @@ module Homebrew
puts "Installing #{name} tap. It is not currently installed." if verbose
args = []
args << "--force" if force
args.append("--force-auto-update") if options[:force_auto_update]
success = if options[:clone_target]
Bundle.brew("tap", name, options[:clone_target], *args, verbose:)

View File

@ -139,7 +139,11 @@ module Cask
def initialize(cask, *dsl_args)
@cask = cask
@dirmethod = nil
@dsl_args = dsl_args.deep_dup
@dsl_key = nil
@english_article = nil
@english_name = nil
end
def config

View File

@ -464,9 +464,9 @@ module Cask
args: paths,
print_stderr: Homebrew::EnvConfig.developer?
trashed, = stdout.partition("\n")
trashed = trashed.split(":") & paths
untrashable = paths - trashed
trashed, _, untrashable = stdout.partition("\n")
trashed = trashed.split(":")
untrashable = untrashable.split(":")
trashed_with_permissions, untrashable = untrashable.partition do |path|
Utils.gain_permissions(path, ["-R"], SystemCommand) do
@ -514,7 +514,7 @@ module Cask
end
# Directory counts as empty if it only contains a `.DS_Store`.
if children.include?((ds_store = resolved_path/".DS_Store"))
if children.include?(ds_store = resolved_path/".DS_Store")
Utils.gain_permissions_remove(ds_store, command:)
children.delete(ds_store)
end

View File

@ -41,7 +41,9 @@ module Cask
super
target = target_hash[:target]
@source = nil
@source_string = source.to_s
@target = nil
@target_string = target.to_s
end

View File

@ -6,11 +6,6 @@ require "cask/artifact/symlinked"
module Cask
module Artifact
class ShellCompletion < Symlinked
sig { params(cask: Cask, source: T.any(String, Pathname)).returns(ShellCompletion) }
def self.from_args(cask, source)
new(cask, source)
end
sig { params(_: T.any(String, Pathname)).returns(Pathname) }
def resolve_target(_)
raise CaskInvalidError, "Shell completion without shell info"

View File

@ -1,9 +1,14 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true
module Cask
# Sorted set containing all cask artifacts.
class ArtifactSet < ::Set
extend T::Generic
Elem = type_member(:out) { { fixed: Artifact::AbstractArtifact } }
sig { params(block: T.nilable(T.proc.params(arg0: Elem).returns(T.untyped))).void }
def each(&block)
return enum_for(T.must(__method__)) { size } unless block
@ -11,6 +16,7 @@ module Cask
self
end
sig { returns(T::Array[Artifact::AbstractArtifact]) }
def to_a
super.sort
end

View File

@ -27,7 +27,7 @@ module Cask
sig {
params(
cask: ::Cask::Cask, download: T::Boolean, quarantine: T::Boolean, token_conflicts: T.nilable(T::Boolean),
cask: ::Cask::Cask, download: T::Boolean, quarantine: T::Boolean,
online: T.nilable(T::Boolean), strict: T.nilable(T::Boolean), signing: T.nilable(T::Boolean),
new_cask: T.nilable(T::Boolean), only: T::Array[String], except: T::Array[String]
).void
@ -35,14 +35,13 @@ module Cask
def initialize(
cask,
download: false, quarantine: false,
token_conflicts: nil, online: nil, strict: nil, signing: nil,
online: nil, strict: nil, signing: nil,
new_cask: nil, only: [], except: []
)
# `new_cask` implies `online`, `token_conflicts`, `strict` and `signing`
# `new_cask` implies `online`, `strict` and `signing`
online = new_cask if online.nil?
strict = new_cask if strict.nil?
signing = new_cask if signing.nil?
token_conflicts = new_cask if token_conflicts.nil?
# `online` and `signing` imply `download`
download ||= online || signing
@ -53,7 +52,6 @@ module Cask
@strict = strict
@signing = signing
@new_cask = new_cask
@token_conflicts = token_conflicts
@only = only
@except = except
end
@ -70,9 +68,6 @@ module Cask
sig { returns(T::Boolean) }
def strict? = !!@strict
sig { returns(T::Boolean) }
def token_conflicts? = !!@token_conflicts
sig { returns(::Cask::Audit) }
def run!
only_audits = @only
@ -430,15 +425,10 @@ module Cask
sig { void }
def audit_token_conflicts
return unless token_conflicts?
Homebrew.with_no_api_env do
return unless core_formula_names.include?(cask.token)
add_error(
"possible duplicate, cask token conflicts with Homebrew core formula: #{Formatter.url(core_formula_url)}",
strict_only: true,
)
add_error("cask token conflicts with an existing homebrew/core formula: #{Formatter.url(core_formula_url)}")
end
end
@ -606,7 +596,10 @@ module Cask
def audit_rosetta
return if (url = cask.url).nil?
return unless online?
# Rosetta 2 is only for ARM-capable macOS versions, which are Big Sur (11.x) and later
return if Homebrew::SimulateSystem.current_arch != :arm
return if MacOSVersion::SYMBOLS.fetch(Homebrew::SimulateSystem.current_os, "10") < "11"
return if cask.depends_on.macos&.maximum_version.to_s < "11"
odebug "Auditing Rosetta 2 requirement"
@ -640,7 +633,7 @@ module Cask
# binary stanza can contain shell scripts, so we just continue if lipo fails.
next unless result.success?
odebug result.merged_output
odebug "Architectures: #{result.merged_output}"
unless /arm64|x86_64/.match?(result.merged_output)
add_error "Artifacts architecture is no longer supported by macOS!",
@ -650,11 +643,12 @@ module Cask
supports_arm = result.merged_output.include?("arm64")
mentions_rosetta = cask.caveats.include?("requires Rosetta 2")
requires_intel = cask.depends_on.arch&.any? { |arch| arch[:type] == :intel }
if supports_arm && mentions_rosetta
add_error "Artifacts does not require Rosetta 2 but the caveats say otherwise!",
add_error "Artifacts do not require Rosetta 2 but the caveats say otherwise!",
location: url.location
elsif !supports_arm && !mentions_rosetta
elsif !supports_arm && !mentions_rosetta && !requires_intel
add_error "Artifacts require Rosetta 2 but this is not indicated by the caveats!",
location: url.location
end
@ -698,45 +692,53 @@ module Cask
return unless online?
return unless strict?
odebug "Auditing minimum OS version"
odebug "Auditing minimum macOS version"
plist_min_os = cask_plist_min_os
sparkle_min_os = livecheck_min_os
bundle_min_os = cask_bundle_min_os
sparkle_min_os = cask_sparkle_min_os
app_min_os = [bundle_min_os, sparkle_min_os].compact.max
debug_messages = []
debug_messages << "Plist #{plist_min_os}" if plist_min_os
debug_messages << "Sparkle #{sparkle_min_os}" if sparkle_min_os
odebug "Detected minimum OS version: #{debug_messages.join(" | ")}" unless debug_messages.empty?
min_os = [plist_min_os, sparkle_min_os].compact.max
return if min_os.nil? || min_os <= HOMEBREW_MACOS_OLDEST_ALLOWED
debug_messages << "from artifact: #{bundle_min_os.to_sym}" if bundle_min_os
debug_messages << "from upstream: #{sparkle_min_os.to_sym}" if sparkle_min_os
odebug "Detected minimum macOS: #{app_min_os.to_sym} (#{debug_messages.join(" | ")})" if app_min_os
return if app_min_os.nil? || app_min_os <= HOMEBREW_MACOS_OLDEST_ALLOWED
on_system_block_min_os = cask.on_system_block_min_os
cask_min_os = [on_system_block_min_os, cask.depends_on.macos&.minimum_version].compact.max
odebug "Declared minimum OS version: #{cask_min_os&.to_sym}"
return if cask_min_os&.to_sym == min_os.to_sym
return if cask.on_system_blocks_exist? &&
OnSystem.arch_condition_met?(:arm) &&
depends_on_min_os = cask.depends_on.macos&.minimum_version
cask_min_os = [on_system_block_min_os, depends_on_min_os].compact.max
debug_messages = []
debug_messages << "from on_system block: #{on_system_block_min_os.to_sym}" if on_system_block_min_os
if depends_on_min_os > HOMEBREW_MACOS_OLDEST_ALLOWED
debug_messages << "from depends_on stanza: #{depends_on_min_os.to_sym}"
end
odebug "Declared minimum macOS: #{cask_min_os.to_sym} (#{debug_messages.join(" | ").presence || "default"})"
return if cask_min_os.to_sym == app_min_os.to_sym
# ignore declared minimum OS < 11.x when auditing as ARM a cask with arch-specific artifacts
return if OnSystem.arch_condition_met?(:arm) &&
cask.on_system_blocks_exist? &&
cask_min_os.present? &&
cask_min_os < MacOSVersion.new("11")
min_os_definition = if cask_min_os.present?
if on_system_block_min_os.present? &&
on_system_block_min_os > cask.depends_on.macos&.minimum_version
"a block with a minimum OS version of #{cask_min_os.to_sym.inspect}"
min_os_definition = if cask_min_os > HOMEBREW_MACOS_OLDEST_ALLOWED
definition = if T.must(on_system_block_min_os.to_s <=> depends_on_min_os.to_s).positive?
"an on_system block"
else
cask_min_os.to_sym.inspect
"a depends_on stanza"
end
"#{definition} with a minimum macOS version of #{cask_min_os.to_sym.inspect}"
else
"no minimum OS version"
"no minimum macOS version"
end
add_error "Upstream defined #{min_os.to_sym.inspect} as the minimum OS version " \
source = T.must(bundle_min_os.to_s <=> sparkle_min_os.to_s).positive? ? "Artifact" : "Upstream"
add_error "#{source} defined #{app_min_os.to_sym.inspect} as the minimum macOS version " \
"but the cask declared #{min_os_definition}",
strict_only: true
end
sig { returns(T.nilable(MacOSVersion)) }
def livecheck_min_os
def cask_sparkle_min_os
return unless online?
return unless cask.livecheck_defined?
return if cask.livecheck.strategy != :sparkle
@ -769,10 +771,10 @@ module Cask
end
sig { returns(T.nilable(MacOSVersion)) }
def cask_plist_min_os
def cask_bundle_min_os
return unless online?
plist_min_os = T.let(nil, T.untyped)
min_os = T.let(nil, T.untyped)
@staged_path ||= cask.staged_path
extract_artifacts do |artifacts, tmpdir|
@ -783,13 +785,33 @@ module Cask
next unless File.exist?(plist_path)
plist = system_command!("plutil", args: ["-convert", "xml1", "-o", "-", plist_path]).plist
plist_min_os = plist["LSMinimumSystemVersion"].presence
break if plist_min_os
min_os = plist["LSMinimumSystemVersion"].presence
break if min_os
next unless (main_binary = get_plist_main_binary(path))
next if !File.exist?(main_binary) || File.open(main_binary, "rb") { |f| f.read(2) == "#!" }
macho = MachO.open(main_binary)
min_os = case macho
when MachO::MachOFile
[
macho[:LC_VERSION_MIN_MACOSX].first&.version_string,
macho[:LC_BUILD_VERSION].first&.minos_string,
]
when MachO::FatFile
macho.machos.map do |slice|
[
slice[:LC_VERSION_MIN_MACOSX].first&.version_string,
slice[:LC_BUILD_VERSION].first&.minos_string,
]
end.flatten
end.compact.min
break if min_os
end
end
begin
MacOSVersion.new(plist_min_os).strip_patch
MacOSVersion.new(min_os).strip_patch
rescue MacOSVersion::Error
nil
end

View File

@ -11,17 +11,17 @@ module Cask
params(
cask: ::Cask::Cask, audit_download: T::Boolean, audit_online: T.nilable(T::Boolean),
audit_strict: T.nilable(T::Boolean), audit_signing: T.nilable(T::Boolean),
audit_token_conflicts: T.nilable(T::Boolean), audit_new_cask: T.nilable(T::Boolean), quarantine: T::Boolean,
audit_new_cask: T.nilable(T::Boolean), quarantine: T::Boolean,
any_named_args: T::Boolean, language: T.nilable(String), only: T::Array[String], except: T::Array[String]
).returns(T::Set[String])
}
def self.audit(
cask, audit_download: false, audit_online: nil, audit_strict: nil, audit_signing: nil,
audit_token_conflicts: nil, audit_new_cask: nil, quarantine: false, any_named_args: false, language: nil,
audit_new_cask: nil, quarantine: false, any_named_args: false, language: nil,
only: [], except: []
)
new(
cask, audit_download:, audit_online:, audit_strict:, audit_signing:, audit_token_conflicts:,
cask, audit_download:, audit_online:, audit_strict:, audit_signing:,
audit_new_cask:, quarantine:, any_named_args:, language:, only:, except:
).audit
end
@ -36,7 +36,7 @@ module Cask
params(
cask: ::Cask::Cask, audit_download: T::Boolean, audit_online: T.nilable(T::Boolean),
audit_strict: T.nilable(T::Boolean), audit_signing: T.nilable(T::Boolean),
audit_token_conflicts: T.nilable(T::Boolean), audit_new_cask: T.nilable(T::Boolean), quarantine: T::Boolean,
audit_new_cask: T.nilable(T::Boolean), quarantine: T::Boolean,
any_named_args: T::Boolean, language: T.nilable(String), only: T::Array[String], except: T::Array[String]
).void
}
@ -46,7 +46,6 @@ module Cask
audit_online: nil,
audit_strict: nil,
audit_signing: nil,
audit_token_conflicts: nil,
audit_new_cask: nil,
quarantine: false,
any_named_args: false,
@ -61,7 +60,6 @@ module Cask
@audit_strict = audit_strict
@audit_signing = audit_signing
@quarantine = quarantine
@audit_token_conflicts = audit_token_conflicts
@any_named_args = any_named_args
@language = language
@only = only
@ -131,7 +129,6 @@ module Cask
strict: @audit_strict,
signing: @audit_signing,
new_cask: @audit_new_cask,
token_conflicts: @audit_token_conflicts,
download: @audit_download,
quarantine: @quarantine,
only: @only,

View File

@ -8,7 +8,7 @@ require "cask/dsl"
require "cask/metadata"
require "cask/tab"
require "utils/bottles"
require "extend/api_hashable"
require "api_hashable"
module Cask
# An instance of a cask.
@ -371,6 +371,9 @@ module Cask
"url" => url,
"url_specs" => url_specs,
"version" => version,
"autobump" => autobump?,
"no_autobump_message" => no_autobump_message,
"skip_livecheck" => livecheck.skip?,
"installed" => installed_version,
"installed_time" => install_time&.to_i,
"bundle_version" => bundle_long_version,
@ -413,16 +416,14 @@ module Cask
if @dsl.on_system_blocks_exist?
begin
OnSystem::ALL_OS_ARCH_COMBINATIONS.each do |os, arch|
bottle_tag = ::Utils::Bottles::Tag.new(system: os, arch:)
next unless bottle_tag.valid_combination?
OnSystem::VALID_OS_ARCH_TAGS.each do |bottle_tag|
next if bottle_tag.linux? && @dsl.os.nil?
next if bottle_tag.macos? &&
depends_on.macos &&
!@dsl.depends_on_set_in_block? &&
!depends_on.macos.allows?(bottle_tag.to_macos_version)
Homebrew::SimulateSystem.with(os:, arch:) do
Homebrew::SimulateSystem.with_tag(bottle_tag) do
refresh
to_h.each do |key, value|

View File

@ -6,6 +6,7 @@ require "cask/cask"
require "uri"
require "utils/curl"
require "extend/hash/keys"
require "api"
module Cask
# Loads a cask from various sources.
@ -104,8 +105,8 @@ module Cask
return
end
return if %w[.rb .json].exclude?(path.extname)
return unless path.expand_path.exist?
return if invalid_path?(path)
return if Homebrew::EnvConfig.forbid_packages_from_paths? &&
!path.realpath.to_s.start_with?("#{Caskroom.path}/", "#{HOMEBREW_LIBRARY}/Taps/")
@ -113,6 +114,14 @@ module Cask
new(path)
end
sig { params(pathname: Pathname, valid_extnames: T::Array[String]).returns(T::Boolean) }
def self.invalid_path?(pathname, valid_extnames: %w[.rb .json])
return true if valid_extnames.exclude?(pathname.extname)
@invalid_basenames ||= %w[INSTALL_RECEIPT.json sbom.spdx.json].freeze
@invalid_basenames.include?(pathname.basename.to_s)
end
attr_reader :token, :path
sig { params(path: T.any(Pathname, String), token: String).void }
@ -135,8 +144,10 @@ module Cask
@content = path.read(encoding: "UTF-8")
@config = config
if path.extname == ".json"
return FromAPILoader.new(token, from_json: JSON.parse(@content), path:).load(config:)
if !self.class.invalid_path?(path, valid_extnames: %w[.json]) &&
(from_json = JSON.parse(@content).presence) &&
from_json.is_a?(Hash)
return FromAPILoader.new(token, from_json:, path:).load(config:)
end
begin
@ -284,7 +295,7 @@ module Cask
sig { returns(Pathname) }
attr_reader :path
sig { returns(T.nilable(Hash)) }
sig { returns(T.nilable(T::Hash[String, T.untyped])) }
attr_reader :from_json
sig {
@ -306,7 +317,13 @@ module Cask
new("#{tap}/#{token}")
end
sig { params(token: String, from_json: Hash, path: T.nilable(Pathname)).void }
sig {
params(
token: String,
from_json: T.nilable(T::Hash[String, T.untyped]),
path: T.nilable(Pathname),
).void
}
def initialize(token, from_json: T.unsafe(nil), path: nil)
@token = token.sub(%r{^homebrew/(?:homebrew-)?cask/}i, "")
@sourcefile_path = path || Homebrew::API::Cask.cached_json_file_path
@ -400,7 +417,7 @@ module Cask
container(**container_hash)
end
json_cask[:artifacts].each do |artifact|
json_cask[:artifacts]&.each do |artifact|
# convert generic string replacements into actual ones
artifact = cask.loader.from_h_gsubs(artifact, appdir)
key = artifact.keys.first

View File

@ -1,6 +1,7 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
require "autobump_constants"
require "locale"
require "lazy_object"
require "livecheck"
@ -25,7 +26,7 @@ require "cask/dsl/version"
require "cask/url"
require "cask/utils"
require "extend/on_system"
require "on_system"
module Cask
# Class representing the domain-specific language used for casks.
@ -68,7 +69,6 @@ module Cask
].freeze
DSL_METHODS = Set.new([
:appcast,
:arch,
:artifacts,
:auto_updates,
@ -102,6 +102,9 @@ module Cask
:livecheck,
:livecheck_defined?,
:livecheckable?, # TODO: remove once `#livecheckable?` is removed
:no_autobump!,
:autobump?,
:no_autobump_message,
:on_system_blocks_exist?,
:on_system_block_min_os,
:depends_on_set_in_block?,
@ -112,22 +115,28 @@ module Cask
include OnSystem::MacOSAndLinux
attr_reader :cask, :token, :artifacts, :deprecation_date, :deprecation_reason,
attr_reader :cask, :token, :no_autobump_message, :artifacts, :deprecation_date, :deprecation_reason,
:deprecation_replacement_cask, :deprecation_replacement_formula,
:disable_date, :disable_reason, :disable_replacement_cask,
:disable_replacement_formula, :on_system_block_min_os
sig { params(cask: Cask).void }
def initialize(cask)
# NOTE: Variables set by `set_unique_stanza` must be initialized to `nil`.
@auto_updates = T.let(nil, T.nilable(T::Boolean))
# NOTE: `:"@#{stanza}"` variables set by `set_unique_stanza` must be
# initialized to `nil`.
@arch = T.let(nil, T.nilable(String))
@arch_set_in_block = T.let(false, T::Boolean)
@artifacts = T.let(ArtifactSet.new, ArtifactSet)
@auto_updates = T.let(nil, T.nilable(T::Boolean))
@auto_updates_set_in_block = T.let(false, T::Boolean)
@autobump = T.let(true, T::Boolean)
@called_in_on_system_block = T.let(false, T::Boolean)
@cask = T.let(cask, Cask)
@caveats = T.let(DSL::Caveats.new(cask), DSL::Caveats)
@conflicts_with = T.let(nil, T.nilable(DSL::ConflictsWith))
@conflicts_with_set_in_block = T.let(false, T::Boolean)
@container = T.let(nil, T.nilable(DSL::Container))
@container_set_in_block = T.let(false, T::Boolean)
@depends_on = T.let(DSL::DependsOn.new, DSL::DependsOn)
@depends_on_set_in_block = T.let(false, T::Boolean)
@deprecated = T.let(false, T::Boolean)
@ -136,25 +145,32 @@ module Cask
@deprecation_replacement_cask = T.let(nil, T.nilable(String))
@deprecation_replacement_formula = T.let(nil, T.nilable(String))
@desc = T.let(nil, T.nilable(String))
@desc_set_in_block = T.let(false, T::Boolean)
@disable_date = T.let(nil, T.nilable(Date))
@disable_reason = T.let(nil, T.nilable(T.any(String, Symbol)))
@disable_replacement_cask = T.let(nil, T.nilable(String))
@disable_replacement_formula = T.let(nil, T.nilable(String))
@disabled = T.let(false, T::Boolean)
@homepage = T.let(nil, T.nilable(String))
@homepage_set_in_block = T.let(false, T::Boolean)
@language_blocks = T.let({}, T::Hash[T::Array[String], Proc])
@language_eval = T.let(nil, T.nilable(String))
@livecheck = T.let(Livecheck.new(cask), Livecheck)
@livecheck_defined = T.let(false, T::Boolean)
@name = T.let([], T::Array[String])
@no_autobump_defined = T.let(false, T::Boolean)
@on_system_blocks_exist = T.let(false, T::Boolean)
@os = T.let(nil, T.nilable(String))
@on_system_block_min_os = T.let(nil, T.nilable(MacOSVersion))
@os = T.let(nil, T.nilable(String))
@os_set_in_block = T.let(false, T::Boolean)
@sha256 = T.let(nil, T.nilable(T.any(Checksum, Symbol)))
@sha256_set_in_block = T.let(false, T::Boolean)
@staged_path = T.let(nil, T.nilable(Pathname))
@token = T.let(cask.token, String)
@url = T.let(nil, T.nilable(URL))
@url_set_in_block = T.let(false, T::Boolean)
@version = T.let(nil, T.nilable(DSL::Version))
@version_set_in_block = T.let(false, T::Boolean)
end
sig { returns(T::Boolean) }
@ -210,7 +226,7 @@ module Cask
raise CaskInvalidError.new(cask, "'#{stanza}' stanza may only appear once.")
end
if instance_variable_defined?(:"@#{stanza}_set_in_block") && @called_in_on_system_block
if instance_variable_get(:"@#{stanza}_set_in_block") && @called_in_on_system_block
raise CaskInvalidError.new(cask, "'#{stanza}' stanza may only be overridden once.")
end
end
@ -345,6 +361,8 @@ module Cask
raise CaskInvalidError.new(cask, "invalid 'version' value: #{arg.inspect}")
end
no_autobump! because: :latest_version if arg == :latest
DSL::Version.new(arg)
end
end
@ -468,7 +486,7 @@ module Cask
def add_implicit_macos_dependency
return if (cask_depends_on = @depends_on).present? && cask_depends_on.macos.present?
depends_on macos: ">= :#{MacOSVersion::SYMBOLS.key MacOSVersion::SYMBOLS.values.min}"
depends_on macos: ">= #{MacOSVersion.new(HOMEBREW_MACOS_OLDEST_ALLOWED).to_sym.inspect}"
end
# Declare conflicts that keep a cask from installing or working correctly.
@ -530,6 +548,8 @@ module Cask
@livecheck_defined = true
@livecheck.instance_eval(&block)
no_autobump! because: :extract_plist if @livecheck.strategy == :extract_plist
@livecheck
end
# Whether the cask contains a `livecheck` block. This is a legacy alias
@ -540,6 +560,37 @@ module Cask
@livecheck_defined == true
end
# Excludes the cask from autobump list.
#
# TODO: limit this method to the official taps only (f.e. raise
# an error if `!tap.official?`)
#
# @api public
sig { params(because: T.any(String, Symbol)).void }
def no_autobump!(because:)
if because.is_a?(Symbol) && !NO_AUTOBUMP_REASONS_LIST.key?(because)
raise ArgumentError, "'because' argument should use valid symbol or a string!"
end
if !@cask.allow_reassignment && @no_autobump_defined
raise CaskInvalidError.new(cask, "'no_autobump_defined' stanza may only appear once.")
end
@no_autobump_defined = true
@no_autobump_message = because
@autobump = false
end
# Is the cask in autobump list?
def autobump?
@autobump == true
end
# Is no_autobump! method defined?
def no_autobump_defined?
@no_autobump_defined == true
end
# Declare that a cask is no longer functional or supported.
#
# NOTE: A warning will be shown when trying to install this cask.

View File

@ -2,7 +2,7 @@
# frozen_string_literal: true
require "cask/utils"
require "extend/on_system"
require "on_system"
module Cask
class DSL

View File

@ -52,16 +52,17 @@ module Cask
raise "Only a single 'depends_on macos' is allowed." if defined?(@macos)
# workaround for https://github.com/sorbet/sorbet/issues/6860
first_arg = args.first&.to_s
first_arg = args.first
first_arg_s = first_arg&.to_s
begin
@macos = if args.count > 1
MacOSRequirement.new([args], comparator: "==")
elsif MacOSVersion::SYMBOLS.key?(args.first)
elsif first_arg.is_a?(Symbol) && MacOSVersion::SYMBOLS.key?(first_arg)
MacOSRequirement.new([args.first], comparator: "==")
elsif (md = /^\s*(?<comparator><|>|[=<>]=)\s*:(?<version>\S+)\s*$/.match(first_arg))
elsif (md = /^\s*(?<comparator><|>|[=<>]=)\s*:(?<version>\S+)\s*$/.match(first_arg_s))
MacOSRequirement.new([T.must(md[:version]).to_sym], comparator: md[:comparator])
elsif (md = /^\s*(?<comparator><|>|[=<>]=)\s*(?<version>\S+)\s*$/.match(first_arg))
elsif (md = /^\s*(?<comparator><|>|[=<>]=)\s*(?<version>\S+)\s*$/.match(first_arg_s))
MacOSRequirement.new([md[:version]], comparator: md[:comparator])
# This is not duplicate of the first case: see `args.first` and a different comparator.
else # rubocop:disable Lint/DuplicateBranch

View File

@ -4,6 +4,7 @@
require "formula_installer"
require "unpack_strategy"
require "utils/topological_hash"
require "utils/analytics"
require "cask/config"
require "cask/download"
@ -11,8 +12,6 @@ require "cask/migrator"
require "cask/quarantine"
require "cask/tab"
require "cgi"
module Cask
# Installer for a {Cask}.
class Installer
@ -151,7 +150,7 @@ module Cask
oh1 "Installing Cask #{Formatter.identifier(@cask)}"
# GitHub Actions globally disables Gatekeeper.
opoo "macOS's Gatekeeper has been disabled for this Cask" if !quarantine? && !GitHub::Actions.env_set?
opoo_outside_github_actions "macOS's Gatekeeper has been disabled for this Cask" unless quarantine?
stage
@cask.config = @cask.default_config.merge(old_config)
@ -305,6 +304,20 @@ on_request: true)
next if artifact.is_a?(Artifact::Binary) && !binaries?
artifact = T.cast(
artifact,
T.any(
Artifact::AbstractFlightBlock,
Artifact::Installer,
Artifact::KeyboardLayout,
Artifact::Mdimporter,
Artifact::Moved,
Artifact::Pkg,
Artifact::Qlplugin,
Artifact::Symlinked,
),
)
artifact.install_phase(
command: @command, verbose: verbose?, adopt: adopt?, auto_updates: @cask.auto_updates,
force: force?, predecessor:
@ -550,6 +563,18 @@ on_request: true)
artifacts.each do |artifact|
if artifact.respond_to?(:uninstall_phase)
artifact = T.cast(
artifact,
T.any(
Artifact::AbstractFlightBlock,
Artifact::KeyboardLayout,
Artifact::Moved,
Artifact::Qlplugin,
Artifact::Symlinked,
Artifact::Uninstall,
),
)
odebug "Uninstalling artifact of class #{artifact.class}"
artifact.uninstall_phase(
command: @command,
@ -564,6 +589,8 @@ on_request: true)
next unless artifact.respond_to?(:post_uninstall_phase)
artifact = T.cast(artifact, Artifact::Uninstall)
odebug "Post-uninstalling artifact of class #{artifact.class}"
artifact.post_uninstall_phase(
command: @command,
@ -577,7 +604,6 @@ on_request: true)
def zap
load_installed_caskfile!
ohai "Implied `brew uninstall --cask #{@cask}`"
uninstall_artifacts
if (zap_stanzas = @cask.artifacts.select { |a| a.is_a?(Artifact::Zap) }).empty?
opoo "No zap stanza present for Cask '#{@cask}'"
@ -692,9 +718,10 @@ on_request: true)
sig { void }
def forbidden_cask_and_formula_check
forbid_casks = Homebrew::EnvConfig.forbid_casks?
forbidden_formulae = Set.new(Homebrew::EnvConfig.forbidden_formulae.to_s.split)
forbidden_casks = Set.new(Homebrew::EnvConfig.forbidden_casks.to_s.split)
return if forbidden_formulae.blank? && forbidden_casks.blank?
return if !forbid_casks && forbidden_formulae.blank? && forbidden_casks.blank?
owner = Homebrew::EnvConfig.forbidden_owner
owner_contact = if (contact = Homebrew::EnvConfig.forbidden_owner_contact.presence)
@ -705,13 +732,17 @@ on_request: true)
cask_and_formula_dependencies.each do |dep_cask_or_formula|
dep_name, dep_type, variable = if dep_cask_or_formula.is_a?(Cask) && forbidden_casks.present?
dep_cask = dep_cask_or_formula
dep_cask_name = if forbidden_casks.include?(dep_cask.token)
env_variable = "HOMEBREW_FORBIDDEN_CASKS"
dep_cask_name = if forbid_casks
env_variable = "HOMEBREW_FORBID_CASKS"
dep_cask.token
elsif forbidden_casks.include?(dep_cask.full_name)
dep_cask.token
elsif dep_cask.tap.present? &&
forbidden_casks.include?(dep_cask.full_name)
dep_cask.full_name
end
[dep_cask_name, "cask", "HOMEBREW_FORBIDDEN_CASKS"]
[dep_cask_name, "cask", env_variable]
elsif dep_cask_or_formula.is_a?(Formula) && forbidden_formulae.present?
dep_formula = dep_cask_or_formula
formula_name = if forbidden_formulae.include?(dep_formula.name)
@ -731,9 +762,13 @@ on_request: true)
)
end
end
return if forbidden_casks.blank?
return if !forbid_casks && forbidden_casks.blank?
if forbidden_casks.include?(@cask.token)
variable = "HOMEBREW_FORBIDDEN_CASKS"
if forbid_casks
variable = "HOMEBREW_FORBID_CASKS"
@cask.token
elsif forbidden_casks.include?(@cask.token)
@cask.token
elsif forbidden_casks.include?(@cask.full_name)
@cask.full_name
@ -742,7 +777,7 @@ on_request: true)
end
raise CaskCannotBeInstalledError.new(@cask, <<~EOS
forbidden for installation by #{owner} in `HOMEBREW_FORBIDDEN_CASKS`.#{owner_contact}
forbidden for installation by #{owner} in `#{variable}`.#{owner_contact}
EOS
)
end
@ -757,10 +792,10 @@ on_request: true)
if installed_caskfile&.exist?
begin
@cask = CaskLoader.load(installed_caskfile)
@cask = CaskLoader.load_from_installed_caskfile(installed_caskfile)
return
rescue CaskInvalidError
# could be caused by trying to load outdated caskfile
rescue CaskInvalidError, CaskUnavailableError
# could be caused by trying to load outdated or deleted caskfile
end
end

View File

@ -5,10 +5,24 @@ require "tab"
module Cask
class Tab < ::AbstractTab
attr_accessor :uninstall_flight_blocks, :uninstall_artifacts
sig { returns(T.nilable(T::Boolean)) }
attr_accessor :uninstall_flight_blocks
sig { returns(T.nilable(T::Array[T.untyped])) }
attr_accessor :uninstall_artifacts
sig { params(attributes: T::Hash[String, T.untyped]).void }
def initialize(attributes = {})
@uninstall_flight_blocks = T.let(nil, T.nilable(T::Boolean))
@uninstall_artifacts = T.let(nil, T.nilable(T::Array[T.untyped]))
super
end
# Instantiates a {Tab} for a new installation of a cask.
def self.create(cask)
sig { override.params(formula_or_cask: T.any(Formula, Cask)).returns(T.attached_class) }
def self.create(formula_or_cask)
cask = T.cast(formula_or_cask, Cask)
tab = super
tab.tabfile = cask.metadata_main_container_path/FILENAME
@ -23,6 +37,7 @@ module Cask
# Returns a {Tab} for an already installed cask,
# or a fake one if the cask is not installed.
sig { params(cask: Cask).returns(T.attached_class) }
def self.for_cask(cask)
path = cask.metadata_main_container_path/FILENAME
@ -40,6 +55,7 @@ module Cask
tab
end
sig { returns(T.attached_class) }
def self.empty
tab = super
tab.uninstall_flight_blocks = false
@ -76,10 +92,12 @@ module Cask
runtime_deps
end
sig { returns(T.nilable(String)) }
def version
source["version"]
end
sig { params(_args: T.untyped).returns(String) }
def to_json(*_args)
attributes = {
"homebrew_version" => homebrew_version,
@ -98,6 +116,7 @@ module Cask
JSON.pretty_generate(attributes)
end
sig { returns(String) }
def to_s
s = ["Installed"]
s << "using the formulae.brew.sh API" if loaded_from_api

View File

@ -11,11 +11,12 @@ module Cask
T.any(URI::Generic, String, [T.any(URI::Generic, String), T::Hash[Symbol, T.untyped]])
end
# Methods for the `url` stanza.
class DSL
sig { returns(T.any(URI::Generic, String)) }
attr_reader :uri
sig { returns(T.nilable(T::Array[String])) }
sig { returns(T.nilable(T::Hash[T.any(Symbol, String), String])) }
attr_reader :revisions
sig { returns(T.nilable(T::Boolean)) }
@ -57,7 +58,7 @@ module Cask
# @api public
branch: T.nilable(String),
# @api public
revisions: T.nilable(T::Array[String]),
revisions: T.nilable(T::Hash[T.any(Symbol, String), String]),
# @api public
revision: T.nilable(String),
# @api public
@ -87,7 +88,7 @@ module Cask
specs[:using] = @using = T.let(using, T.any(T::Class[AbstractDownloadStrategy], Symbol, NilClass))
specs[:tag] = @tag = T.let(tag, T.nilable(String))
specs[:branch] = @branch = T.let(branch, T.nilable(String))
specs[:revisions] = @revisions = T.let(revisions, T.nilable(T::Array[String]))
specs[:revisions] = @revisions = T.let(revisions, T.nilable(T::Hash[T.any(Symbol, String), String]))
specs[:revision] = @revision = T.let(revision, T.nilable(String))
specs[:trust_cert] = @trust_cert = T.let(trust_cert, T.nilable(T::Boolean))
specs[:cookies] = @cookies = T.let(cookies, T.nilable(T::Hash[String, String]))
@ -101,6 +102,7 @@ module Cask
end
end
# Allow passing a block to the `url` stanza.
class BlockDSL
# Allow accessing the URL associated with page contents.
class PageWithURL < SimpleDelegator
@ -197,7 +199,7 @@ module Cask
using: T.any(T::Class[AbstractDownloadStrategy], Symbol, NilClass),
tag: T.nilable(String),
branch: T.nilable(String),
revisions: T.nilable(T::Array[String]),
revisions: T.nilable(T::Hash[T.any(Symbol, String), String]),
revision: T.nilable(String),
trust_cert: T.nilable(T::Boolean),
cookies: T.nilable(T::Hash[String, String]),

View File

@ -14,10 +14,13 @@ class Caveats
sig { params(formula: Formula).void }
def initialize(formula)
@formula = formula
@caveats = T.let(nil, T.nilable(String))
@completions_and_elisp = T.let(nil, T.nilable(T::Array[String]))
end
sig { returns(String) }
def caveats
@caveats ||= begin
caveats = []
build = formula.build
begin
@ -28,7 +31,21 @@ class Caveats
formula.build = build
end
caveats << keg_only_text
caveats << service_caveats
caveats.compact.join("\n")
end
end
sig { returns(T::Boolean) }
def empty?
caveats.blank? && completions_and_elisp.blank?
end
delegate [:to_s] => :caveats
sig { returns(T::Array[String]) }
def completions_and_elisp
@completions_and_elisp ||= begin
valid_shells = [:bash, :zsh, :fish, :pwsh].freeze
current_shell = Utils::Shell.preferred || Utils::Shell.parent
shells = if current_shell.present? &&
@ -38,16 +55,13 @@ class Caveats
else
valid_shells
end
shells.each do |shell|
caveats << function_completion_caveats(shell)
completions_and_elisp = shells.map do |shell|
function_completion_caveats(shell)
end
completions_and_elisp << elisp_caveats
completions_and_elisp.compact
end
caveats << service_caveats
caveats << elisp_caveats
caveats.compact.join("\n")
end
delegate [:empty?, :to_s] => :caveats
sig { params(skip_reason: T::Boolean).returns(T.nilable(String)) }
def keg_only_text(skip_reason: false)

View File

@ -147,7 +147,7 @@ module Homebrew
{},
T.nilable(T::Hash[
T.nilable(Symbol),
T::Array[T.any(Formula, Keg, Cask::Cask, T::Array[Keg], FormulaOrCaskUnavailableError)]
T::Array[T.any(Formula, Keg, Cask::Cask, T::Array[Keg], FormulaOrCaskUnavailableError)],
]),
)
@to_formulae_casks_unknowns[method] = downcased_unique_named.map do |name|
@ -571,6 +571,7 @@ module Homebrew
end
return unless available
return if Context.current.quiet?
return if cask&.old_tokens&.include?(ref)
opoo package_conflicts_message(ref, loaded_type, cask)
end

View File

@ -169,7 +169,7 @@ module Homebrew
T::Boolean)
odisabled(
"`brew #{@command_name}'. This command needs to be refactored, as it is written in a style that",
"inherits from `Homebrew::AbstractCommand' ( see https://docs.brew.sh/External-Commands )",
"subclassing of `Homebrew::AbstractCommand' ( see https://docs.brew.sh/External-Commands )",
disable_for_developers: false,
)
end
@ -208,11 +208,15 @@ module Homebrew
return if global_switch
description = option_description(description, *names, hidden:)
process_option(*names, description, type: :switch, hidden:) unless disable
env, counterpart = env
if env && @non_global_processed_options.any?
affix = counterpart ? " and `#{counterpart}` is passed." : "."
description += " Enabled by default if `$HOMEBREW_#{env.upcase}` is set#{affix}"
end
if replacement || disable
description += " (#{disable ? "disabled" : "deprecated"}#{"; replaced by #{replacement}" if replacement})"
end
process_option(*names, description, type: :switch, hidden:) unless disable
@parser.public_send(method, *names, *wrap_option_desc(description)) do |value|
# This odeprecated should stick around indefinitely.

View File

@ -31,7 +31,7 @@ module Homebrew
sig { override.void }
def run
ENV.activate_extensions!
T.cast(ENV, Superenv).deps = args.named.to_formulae if superenv?(nil)
ENV.deps = args.named.to_formulae if superenv?(nil)
ENV.setup_build_environment
shell = if args.plain?

View File

@ -73,11 +73,10 @@ module Homebrew
description: "`install` prints output from commands as they are run. " \
"`check` lists all missing dependencies."
switch "--no-upgrade",
env: :bundle_no_upgrade,
description: "`install` does not run `brew upgrade` on outdated dependencies. " \
"`check` does not check for outdated dependencies. " \
"Note they may still be upgraded by `brew install` if needed. " \
"This is enabled by default if `$HOMEBREW_BUNDLE_NO_UPGRADE` is set."
"Note they may still be upgraded by `brew install` if needed.",
env: :bundle_no_upgrade
switch "--upgrade",
description: "`install` runs `brew upgrade` on outdated dependencies, " \
"even if `$HOMEBREW_BUNDLE_NO_UPGRADE` is set."
@ -87,41 +86,36 @@ module Homebrew
switch "--install",
description: "Run `install` before continuing to other operations e.g. `exec`."
switch "--services",
env: :bundle_services,
description: "Temporarily start services while running the `exec` or `sh` command. " \
"This is enabled by default if `$HOMEBREW_BUNDLE_SERVICES` is set."
description: "Temporarily start services while running the `exec` or `sh` command.",
env: :bundle_services
switch "-f", "--force",
description: "`install` runs with `--force`/`--overwrite`. " \
"`dump` overwrites an existing `Brewfile`. " \
"`cleanup` actually performs its cleanup operations."
switch "--cleanup",
env: :bundle_install_cleanup,
description: "`install` performs cleanup operation, same as running `cleanup --force`. " \
"This is enabled by default if `$HOMEBREW_BUNDLE_INSTALL_CLEANUP` is set and " \
"`--global` is passed."
description: "`install` performs cleanup operation, same as running `cleanup --force`.",
env: [:bundle_install_cleanup, "--global"]
switch "--all",
description: "`list` all dependencies."
switch "--formula", "--brews",
description: "`list` or `dump` Homebrew formula dependencies."
switch "--formula", "--formulae", "--brews",
description: "`list`, `dump` or `cleanup` Homebrew formula dependencies."
switch "--cask", "--casks",
description: "`list` or `dump` Homebrew cask dependencies."
description: "`list`, `dump` or `cleanup` Homebrew cask dependencies."
switch "--tap", "--taps",
description: "`list` or `dump` Homebrew tap dependencies."
description: "`list`, `dump` or `cleanup` Homebrew tap dependencies."
switch "--mas",
description: "`list` or `dump` Mac App Store dependencies."
switch "--whalebrew",
description: "`list` or `dump` Whalebrew dependencies."
switch "--vscode",
description: "`list` or `dump` VSCode (and forks/variants) extensions."
description: "`list`, `dump` or `cleanup` VSCode (and forks/variants) extensions."
switch "--no-vscode",
env: :bundle_dump_no_vscode,
description: "`dump` without VSCode (and forks/variants) extensions. " \
"This is enabled by default if `$HOMEBREW_BUNDLE_DUMP_NO_VSCODE` is set."
description: "`dump` without VSCode (and forks/variants) extensions.",
env: :bundle_dump_no_vscode
switch "--describe",
env: :bundle_dump_describe,
description: "`dump` adds a description comment above each line, unless the " \
"dependency does not have a description. " \
"This is enabled by default if `$HOMEBREW_BUNDLE_DUMP_DESCRIBE` is set."
"dependency does not have a description.",
env: :bundle_dump_describe
switch "--no-restart",
description: "`dump` does not add `restart_service` to formula lines."
switch "--zap",
@ -144,6 +138,9 @@ module Homebrew
# Keep this inside `run` to keep --help fast.
require "bundle"
# Don't want to ask for input in Bundle
ENV["HOMEBREW_ASK"] = nil
subcommand = args.named.first.presence
if %w[exec add remove].exclude?(subcommand) && args.named.size > 1
raise UsageError, "This command does not take more than 1 subcommand argument."
@ -165,7 +162,7 @@ module Homebrew
zap = args.zap?
Homebrew::Bundle.upgrade_formulae = args.upgrade_formulae
no_type_args = !args.brews? && !args.casks? && !args.taps? && !args.mas? && !args.whalebrew? && !args.vscode?
no_type_args = [args.formulae?, args.casks?, args.taps?, args.mas?, args.whalebrew?, args.vscode?].none?
if args.install?
if [nil, "install", "upgrade"].include?(subcommand)
@ -212,7 +209,7 @@ module Homebrew
describe: args.describe?,
no_restart: args.no_restart?,
taps: args.taps? || no_type_args,
brews: args.brews? || no_type_args,
formulae: args.formulae? || no_type_args,
casks: args.casks? || no_type_args,
mas: args.mas? || no_type_args,
whalebrew: args.whalebrew? || no_type_args,
@ -223,7 +220,13 @@ module Homebrew
exec_editor(Homebrew::Bundle::Brewfile.path(global:, file:))
when "cleanup"
require "bundle/commands/cleanup"
Homebrew::Bundle::Commands::Cleanup.run(global:, file:, force:, zap:)
Homebrew::Bundle::Commands::Cleanup.run(
global:, file:, force:, zap:,
formulae: args.formulae? || no_type_args,
casks: args.casks? || no_type_args,
taps: args.taps? || no_type_args,
vscode: args.vscode? || no_type_args
)
when "check"
require "bundle/commands/check"
Homebrew::Bundle::Commands::Check.run(global:, file:, no_upgrade:, verbose:)
@ -232,7 +235,7 @@ module Homebrew
Homebrew::Bundle::Commands::List.run(
global:,
file:,
brews: args.brews? || args.all? || no_type_args,
formulae: args.formulae? || args.all? || no_type_args,
casks: args.casks? || args.all?,
taps: args.taps? || args.all?,
mas: args.mas? || args.all?,
@ -240,9 +243,9 @@ module Homebrew
vscode: args.vscode? || args.all?,
)
when "add", "remove"
# We intentionally omit the `s` from `brews`, `casks`, and `taps` for ease of handling later.
# We intentionally omit the s from `brews`, `casks`, and `taps` for ease of handling later.
type_hash = {
brew: args.brews?,
brew: args.formulae?,
cask: args.casks?,
tap: args.taps?,
mas: args.mas?,
@ -273,17 +276,7 @@ module Homebrew
_subcommand, *named_args = args.named
named_args
when "sh"
preferred_path = Utils::Shell.preferred_path(default: "/bin/bash")
notice = unless Homebrew::EnvConfig.no_env_hints?
<<~EOS
Your shell has been configured to use a build environment from your `Brewfile`.
This should help you build stuff.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
When done, type `exit`.
EOS
end
ENV["HOMEBREW_FORCE_API_AUTO_UPDATE"] = nil
[Utils::Shell.shell_with_prompt("brew bundle", preferred_path:, notice:)]
["sh"]
when "env"
["env"]
end

View File

@ -18,8 +18,7 @@ module Homebrew
If any version of each formula argument is installed and no other options
are passed, this command displays their actual runtime dependencies (similar
to `brew linkage`), which may differ from the current versions' stated
dependencies if the installed versions are outdated.
to `brew linkage`), which may differ from a formula's declared dependencies.
*Note:* `--missing` and `--skip-recommended` have precedence over `--include-*`.
EOS
@ -92,26 +91,50 @@ module Homebrew
raise UsageError, "`brew deps --arch=all` is not supported" if args.arch == "all"
os, arch = T.must(args.os_arch_combinations.first)
all = args.eval_all?
eval_all = args.eval_all?
Formulary.enable_factory_cache!
SimulateSystem.with(os:, arch:) do
recursive = !args.direct?
installed = args.installed? || dependents(args.named.to_formulae_and_casks).all?(&:any_version_installed?)
@use_runtime_dependencies = true
@use_runtime_dependencies = installed && recursive &&
!args.tree? &&
!args.graph? &&
!args.HEAD? &&
!args.include_implicit? &&
!args.include_build? &&
!args.include_test? &&
!args.include_optional? &&
!args.skip_recommended? &&
!args.missing? &&
args.os.nil? &&
args.arch.nil?
installed = args.installed? || dependents(args.named.to_formulae_and_casks).all?(&:any_version_installed?)
unless installed
not_using_runtime_dependencies_reason = if args.installed?
"not all the named formulae were installed"
else
"`--installed` was not passed"
end
@use_runtime_dependencies = false
end
%w[direct tree graph HEAD skip_recommended missing
include_implicit include_build include_test include_optional].each do |arg|
next unless args.public_send("#{arg}?")
not_using_runtime_dependencies_reason = "--#{arg.tr("_", "-")} was passed"
@use_runtime_dependencies = false
end
%w[os arch].each do |arg|
next if args.public_send(arg).nil?
not_using_runtime_dependencies_reason = "--#{arg.tr("_", "-")} was passed"
@use_runtime_dependencies = false
end
if !@use_runtime_dependencies && !Homebrew::EnvConfig.no_env_hints?
opoo <<~EOS
`brew deps` is not the actual runtime dependencies because #{not_using_runtime_dependencies_reason}!
This means dependencies may differ from a formula's declared dependencies.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
EOS
end
recursive = !args.direct?
if args.tree? || args.graph?
dependents = if args.named.present?
@ -141,9 +164,9 @@ module Homebrew
puts_deps_tree(dependents, recursive:)
return
elsif all
elsif eval_all
puts_deps(sorted_dependents(
Formula.all(eval_all: args.eval_all?) + Cask::Cask.all(eval_all: args.eval_all?),
Formula.all(eval_all:) + Cask::Cask.all(eval_all:),
), recursive:)
return
elsif !args.no_named? && args.for_each?

View File

@ -25,7 +25,8 @@ module Homebrew
"it is interpreted as a regular expression."
switch "--eval-all",
description: "Evaluate all available formulae and casks, whether installed or not, to search their " \
"descriptions. Implied if `$HOMEBREW_EVAL_ALL` is set."
"descriptions.",
env: :eval_all
switch "--formula", "--formulae",
description: "Treat all named arguments as formulae."
switch "--cask", "--casks",
@ -47,7 +48,7 @@ module Homebrew
end
if search_type.present?
if !args.eval_all? && !Homebrew::EnvConfig.eval_all? && Homebrew::EnvConfig.no_install_from_api?
if !args.eval_all? && Homebrew::EnvConfig.no_install_from_api?
raise UsageError, "`brew desc --search` needs `--eval-all` passed or `$HOMEBREW_EVAL_ALL` set!"
end

View File

@ -9,7 +9,7 @@ module Homebrew
cmd_args do
description <<~EOS
Control Homebrew's developer mode. When developer mode is enabled,
`brew update` will update Homebrew to the latest commit on the `master`
`brew update` will update Homebrew to the latest commit on the `main`
branch instead of the latest stable version along with some other behaviour changes.
`brew developer` [`state`]:
@ -38,7 +38,7 @@ module Homebrew
puts "However, `brew update` will update to the latest stable tag because " \
"#{Tty.bold}HOMEBREW_UPDATE_TO_TAG#{Tty.reset} is set."
else
puts "`brew update` will update to the latest commit on the `master` branch."
puts "`brew update` will update to the latest commit on the `main` branch."
end
else
puts "`brew update` will update to the latest stable tag."

View File

@ -1,4 +1,4 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true
require "abstract_command"
@ -6,6 +6,7 @@ require "formula"
require "fetch"
require "cask/download"
require "retryable_download"
require "download_queue"
module Homebrew
module Cmd
@ -69,15 +70,16 @@ module Homebrew
named_args [:formula, :cask], min: 1
end
sig { returns(Integer) }
def concurrency
@concurrency ||= args.concurrency&.to_i || 1
@concurrency ||= T.let(args.concurrency&.to_i || 1, T.nilable(Integer))
end
sig { returns(DownloadQueue) }
def download_queue
@download_queue ||= begin
require "download_queue"
@download_queue ||= T.let(begin
DownloadQueue.new(concurrency)
end
end, T.nilable(DownloadQueue))
end
class Spinner
@ -96,8 +98,8 @@ module Homebrew
sig { void }
def initialize
@start = Time.now
@i = 0
@start = T.let(Time.now, Time)
@i = T.let(0, Integer)
end
sig { returns(String) }
@ -136,7 +138,7 @@ module Homebrew
bucket.each do |formula_or_cask|
case formula_or_cask
when Formula
formula = T.cast(formula_or_cask, Formula)
formula = formula_or_cask
ref = formula.loaded_from_api? ? formula.full_name : formula.path
os_arch_combinations.each do |os, arch|
@ -189,7 +191,9 @@ module Homebrew
next if fetched_bottle
fetch_downloadable(formula.resource)
if (resource = formula.resource)
fetch_downloadable(resource)
end
formula.resources.each do |r|
fetch_downloadable(r)
@ -231,7 +235,7 @@ module Homebrew
end
else
spinner = Spinner.new
remaining_downloads = downloads.dup
remaining_downloads = downloads.dup.to_a
previous_pending_line_count = 0
begin
@ -332,10 +336,13 @@ module Homebrew
private
sig { returns(T::Hash[T.any(Resource, Bottle, Cask::Download), Concurrent::Promises::Future]) }
def downloads
@downloads ||= {}
@downloads ||= T.let({}, T.nilable(T::Hash[T.any(Resource, Bottle, Cask::Download),
Concurrent::Promises::Future]))
end
sig { params(downloadable: T.any(Resource, Bottle, Cask::Download)).void }
def fetch_downloadable(downloadable)
downloads[downloadable] ||= begin
tries = args.retry? ? {} : { tries: 1 }

View File

@ -1,4 +1,4 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true
require "abstract_command"
@ -18,7 +18,7 @@ module Homebrew
class Info < AbstractCommand
VALID_DAYS = %w[30 90 365].freeze
VALID_FORMULA_CATEGORIES = %w[install install-on-request build-error].freeze
VALID_CATEGORIES = (VALID_FORMULA_CATEGORIES + %w[cask-install os-version]).freeze
VALID_CATEGORIES = T.let((VALID_FORMULA_CATEGORIES + %w[cask-install os-version]).freeze, T::Array[String])
cmd_args do
description <<~EOS
@ -57,7 +57,7 @@ module Homebrew
switch "--eval-all",
depends_on: "--json",
description: "Evaluate all available formulae and casks, whether installed or not, to print their " \
"JSON. Implied if `$HOMEBREW_EVAL_ALL` is set."
"JSON."
switch "--variations",
depends_on: "--json",
description: "Include the variations hash in each formula's JSON output."
@ -96,14 +96,15 @@ module Homebrew
end
print_analytics
elsif args.json
all = args.eval_all?
print_json(all)
elsif (json = args.json)
print_json(json, args.eval_all?)
elsif args.github?
raise FormulaOrCaskUnspecifiedError if args.no_named?
exec_browser(*args.named.to_formulae_and_casks.map { |f| github_info(f) })
exec_browser(*args.named.to_formulae_and_casks.map do |formula_keg_or_cask|
formula_or_cask = T.cast(formula_keg_or_cask, T.any(Formula, Cask::Cask))
github_info(formula_or_cask)
end)
elsif args.no_named?
print_statistics
else
@ -111,6 +112,7 @@ module Homebrew
end
end
sig { params(remote: String, path: String).returns(String) }
def github_remote_path(remote, path)
if remote =~ %r{^(?:https?://|git(?:@|://))github\.com[:/](.+)/(.+?)(?:\.git)?$}
"https://github.com/#{Regexp.last_match(1)}/#{Regexp.last_match(2)}/blob/HEAD/#{path}"
@ -175,6 +177,7 @@ module Homebrew
end
end
sig { params(version: T.any(T::Boolean, String)).returns(Symbol) }
def json_version(version)
version_hash = {
true => :default,
@ -187,16 +190,16 @@ module Homebrew
version_hash[version]
end
sig { params(all: T::Boolean).void }
def print_json(all)
raise FormulaOrCaskUnspecifiedError if !(all || args.installed?) && args.no_named?
sig { params(json: T.any(T::Boolean, String), eval_all: T::Boolean).void }
def print_json(json, eval_all)
raise FormulaOrCaskUnspecifiedError if !(eval_all || args.installed?) && args.no_named?
json = case json_version(args.json)
json = case json_version(json)
when :v1, :default
raise UsageError, "Cannot specify `--cask` when using `--json=v1`!" if args.cask?
formulae = if all
Formula.all(eval_all: args.eval_all?).sort
formulae = if eval_all
Formula.all(eval_all:).sort
elsif args.installed?
Formula.installed.sort
else
@ -210,10 +213,10 @@ module Homebrew
end
when :v2
formulae, casks = T.let(
if all
if eval_all
[
Formula.all(eval_all: args.eval_all?).sort,
Cask::Cask.all(eval_all: args.eval_all?).sort_by(&:full_name),
Formula.all(eval_all:).sort,
Cask::Cask.all(eval_all:).sort_by(&:full_name),
]
elsif args.installed?
[Formula.installed.sort, Cask::Caskroom.casks.sort_by(&:full_name)]
@ -240,25 +243,31 @@ module Homebrew
puts JSON.pretty_generate(json)
end
sig { params(formula_or_cask: T.any(Formula, Cask::Cask)).returns(String) }
def github_info(formula_or_cask)
return formula_or_cask.path if formula_or_cask.tap.blank? || formula_or_cask.tap.remote.blank?
path = case formula_or_cask
when Formula
formula = formula_or_cask
formula.path.relative_path_from(T.must(formula.tap).path)
tap = formula.tap
return formula.path.to_s if tap.blank? || tap.remote.blank?
formula.path.relative_path_from(tap.path)
when Cask::Cask
cask = formula_or_cask
tap = cask.tap
return cask.sourcefile_path.to_s if tap.blank? || tap.remote.blank?
if cask.sourcefile_path.blank? || cask.sourcefile_path.extname != ".rb"
return "#{cask.tap.default_remote}/blob/HEAD/#{cask.tap.relative_cask_path(cask.token)}"
return "#{tap.default_remote}/blob/HEAD/#{tap.relative_cask_path(cask.token)}"
end
cask.sourcefile_path.relative_path_from(cask.tap.path)
cask.sourcefile_path.relative_path_from(tap.path)
end
github_remote_path(formula_or_cask.tap.remote, path)
github_remote_path(tap.remote, path.to_s)
end
sig { params(formula: Formula).void }
def info_formula(formula)
specs = []
@ -356,6 +365,7 @@ module Homebrew
Utils::Analytics.formula_output(formula, args:)
end
sig { params(dependencies: T::Array[Dependency]).returns(String) }
def decorate_dependencies(dependencies)
deps_status = dependencies.map do |dep|
if dep.satisfied?([])
@ -367,6 +377,7 @@ module Homebrew
deps_status.join(", ")
end
sig { params(requirements: T::Array[Requirement]).returns(String) }
def decorate_requirements(requirements)
req_status = requirements.map do |req|
req_s = req.display_s
@ -375,12 +386,14 @@ module Homebrew
req_status.join(", ")
end
sig { params(dep: Dependency).returns(String) }
def dep_display_s(dep)
return dep.name if dep.option_tags.empty?
"#{dep.name} #{dep.option_tags.map { |o| "--#{o}" }.join(" ")}"
end
sig { params(cask: Cask::Cask).void }
def info_cask(cask)
require "cask/info"

View File

@ -33,8 +33,8 @@ module Homebrew
description: "If brewing fails, open an interactive debugging session with access to IRB " \
"or a shell inside the temporary build directory."
switch "--display-times",
env: :display_install_times,
description: "Print install times for each package at the end of the run."
description: "Print install times for each package at the end of the run.",
env: :display_install_times
switch "-f", "--force",
description: "Install formulae without checking for previously installed keg-only or " \
"non-migrated versions. When installing casks, overwrite existing files " \
@ -43,6 +43,10 @@ module Homebrew
description: "Print the verification and post-install steps."
switch "-n", "--dry-run",
description: "Show what would be installed, but do not actually install anything."
switch "--ask",
description: "Ask for confirmation before downloading and installing formulae. " \
"Print download and install sizes of bottles and dependencies.",
env: :ask
[
[:switch, "--formula", "--formulae", {
description: "Treat all named arguments as formulae.",
@ -123,11 +127,6 @@ module Homebrew
[:switch, "--overwrite", {
description: "Delete files that already exist in the prefix while linking.",
}],
[:switch, "--ask", {
description: "Ask for confirmation before downloading and installing formulae. " \
"Print bottles and dependencies download size and install size.",
env: :ask,
}],
].each do |args|
options = args.pop
send(*args, **options)
@ -218,6 +217,7 @@ module Homebrew
end
if casks.any?
Install.ask_casks casks if args.ask?
if args.dry_run?
if (casks_to_install = casks.reject(&:installed?).presence)
ohai "Would install #{::Utils.pluralize("cask", casks_to_install.count, include_count: true)}:"
@ -310,9 +310,7 @@ module Homebrew
Install.perform_preinstall_checks_once
Install.check_cc_argv(args.cc)
Install.ask(formulae, args: args) if args.ask?
Install.install_formulae(
formulae_installer = Install.formula_installers(
installed_formulae,
installed_on_request: !args.as_dependency?,
installed_as_dependency: args.as_dependency?,
@ -338,9 +336,10 @@ module Homebrew
skip_link: args.skip_link?,
)
Upgrade.check_installed_dependents(
dependants = Upgrade.dependants(
installed_formulae,
flags: args.flags_only,
ask: args.ask?,
installed_on_request: !args.as_dependency?,
force_bottle: args.force_bottle?,
build_from_source_formulae: args.build_from_source_formulae,
@ -354,6 +353,28 @@ module Homebrew
dry_run: args.dry_run?,
)
# Main block: if asking the user is enabled, show dependency and size information.
Install.ask_formulae(formulae_installer, dependants, args: args) if args.ask?
Install.install_formulae(formulae_installer,
dry_run: args.dry_run?,
verbose: args.verbose?)
Upgrade.upgrade_dependents(
dependants, installed_formulae,
flags: args.flags_only,
dry_run: args.dry_run?,
force_bottle: args.force_bottle?,
build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
debug: args.debug?,
quiet: args.quiet?,
verbose: args.verbose?
)
Cleanup.periodic_clean!(dry_run: args.dry_run?)
Homebrew.messages.display_messages(display_times: args.display_times?)

View File

@ -215,7 +215,7 @@ module Homebrew
sig { void }
def list_casks
casks = if args.no_named?
cask_paths = Cask::Caskroom.path.children.map do |path|
cask_paths = Cask::Caskroom.path.children.reject(&:file?).map do |path|
if path.symlink?
real_path = path.realpath
real_path.basename.to_s

View File

@ -0,0 +1,23 @@
# typed: strong
# frozen_string_literal: true
require "abstract_command"
require "shell_command"
module Homebrew
module Cmd
class McpServerCmd < AbstractCommand
# This is a shell command as MCP servers need a faster startup time
# than a normal Homebrew Ruby command allows.
include ShellCommand
cmd_args do
description <<~EOS
Starts the Homebrew MCP (Model Context Protocol) server.
EOS
switch "-d", "--debug", description: "Enable debug logging to stderr."
switch "--ping", description: "Start the server, act as if receiving a ping and then exit.", hidden: true
end
end
end
end

View File

@ -0,0 +1,14 @@
# Documentation defined in Library/Homebrew/cmd/mcp-server.rb
# This is a shell command as MCP servers need a faster startup time
# than a normal Homebrew Ruby command allows.
# HOMEBREW_LIBRARY is set by brew.sh
# HOMEBREW_BREW_FILE is set by extend/ENV/super.rb
# shellcheck disable=SC2154
homebrew-mcp-server() {
source "${HOMEBREW_LIBRARY}/Homebrew/utils/ruby.sh"
setup-ruby-path
export HOMEBREW_VERSION
"${HOMEBREW_RUBY_PATH}" "-r${HOMEBREW_LIBRARY}/Homebrew/mcp_server.rb" -e "Homebrew::McpServer.new.run" "$@"
}

View File

@ -18,7 +18,8 @@ module Homebrew
description: "Show options for formulae that are currently installed."
switch "--eval-all",
description: "Evaluate all available formulae and casks, whether installed or not, to show their " \
"options."
"options.",
env: :eval_all
flag "--command=",
description: "Show options for the specified <command>."
@ -29,10 +30,10 @@ module Homebrew
sig { override.void }
def run
all = args.eval_all?
eval_all = args.eval_all?
if all
puts_options(Formula.all(eval_all: args.eval_all?).sort)
if eval_all
puts_options(Formula.all(eval_all:).sort)
elsif args.installed?
puts_options(Formula.installed.sort)
elsif args.command.present?

View File

@ -32,12 +32,10 @@ module Homebrew
"formula is outdated. Otherwise, the repository's HEAD will only be checked for " \
"updates when a new stable or development version has been released."
switch "-g", "--greedy",
env: :upgrade_greedy,
description: "Also include outdated casks with `auto_updates true` or `version :latest`."
description: "Also include outdated casks with `auto_updates true` or `version :latest`.",
env: :upgrade_greedy
switch "--greedy-latest",
description: "Also include outdated casks including those with `version :latest`."
switch "--greedy-auto-updates",
description: "Also include outdated casks including those with `auto_updates true`."
@ -177,7 +175,7 @@ module Homebrew
sig { returns(T::Array[Formula]) }
def outdated_formulae
T.cast(
select_outdated((args.named.to_resolved_formulae.presence || Formula.installed)).sort,
select_outdated(args.named.to_resolved_formulae.presence || Formula.installed).sort,
T::Array[Formula],
)
end

View File

@ -25,7 +25,7 @@ module Homebrew
if f.pinned?
opoo "#{f.name} already pinned"
elsif !f.pinnable?
onoe "#{f.name} not installed"
ofail "#{f.name} not installed"
else
f.pin
end

View File

@ -24,8 +24,8 @@ module Homebrew
switch "--syntax",
description: "Syntax-check all of Homebrew's Ruby files (if no <tap> is passed)."
switch "--eval-all",
description: "Evaluate all available formulae and casks, whether installed or not. " \
"Implied if `$HOMEBREW_EVAL_ALL` is set."
description: "Evaluate all available formulae and casks, whether installed or not.",
env: :eval_all
switch "--no-simulate",
description: "Don't simulate other system configurations when checking formulae and casks."
@ -49,7 +49,7 @@ module Homebrew
options[:os_arch_combinations] = args.os_arch_combinations if args.os || args.arch
taps = if args.no_named?
if !args.eval_all? && !Homebrew::EnvConfig.eval_all?
unless args.eval_all?
raise UsageError, "`brew readall` needs a tap or `--eval-all` passed or `$HOMEBREW_EVAL_ALL` set!"
end

View File

@ -32,13 +32,17 @@ module Homebrew
description: "If brewing fails, open an interactive debugging session with access to IRB " \
"or a shell inside the temporary build directory."
switch "--display-times",
env: :display_install_times,
description: "Print install times for each package at the end of the run."
description: "Print install times for each package at the end of the run.",
env: :display_install_times
switch "-f", "--force",
description: "Install without checking for previously installed keg-only or " \
"non-migrated versions."
switch "-v", "--verbose",
description: "Print the verification and post-install steps."
switch "--ask",
description: "Ask for confirmation before downloading and upgrading formulae. " \
"Print download, install and net install sizes of bottles and dependencies.",
env: :ask
[
[:switch, "--formula", "--formulae", { description: "Treat all named arguments as formulae." }],
[:switch, "-s", "--build-from-source", {
@ -63,11 +67,6 @@ module Homebrew
[:switch, "-g", "--git", {
description: "Create a Git repository, useful for creating patches to the software.",
}],
[:switch, "--ask", {
description: "Ask for confirmation before downloading and upgrading formulae. " \
"Print bottles and dependencies download size, install and net install size.",
env: :ask,
}],
].each do |args|
options = args.pop
send(*args, **options)
@ -131,16 +130,13 @@ module Homebrew
unless formulae.empty?
Install.perform_preinstall_checks_once
# If asking the user is enabled, show dependency and size information.
Install.ask(formulae, args: args) if args.ask?
formulae.each do |formula|
install_context = formulae.map do |formula|
if formula.pinned?
onoe "#{formula.full_name} is pinned. You must unpin it to reinstall."
next
end
Migrator.migrate_if_needed(formula, force: args.force?)
Homebrew::Reinstall.reinstall_formula(
Homebrew::Reinstall.build_install_context(
formula,
flags: args.flags_only,
force_bottle: args.force_bottle?,
@ -154,12 +150,12 @@ module Homebrew
verbose: args.verbose?,
git: args.git?,
)
Cleanup.install_formula_clean!(formula)
end
Upgrade.check_installed_dependents(
dependants = Upgrade.dependants(
formulae,
flags: args.flags_only,
ask: args.ask?,
force_bottle: args.force_bottle?,
build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?,
@ -170,9 +166,47 @@ module Homebrew
quiet: args.quiet?,
verbose: args.verbose?,
)
formulae_installer = install_context.map(&:formula_installer)
# Main block: if asking the user is enabled, show dependency and size information.
Install.ask_formulae(formulae_installer, dependants, args: args) if args.ask?
install_context.each do |f|
Homebrew::Reinstall.reinstall_formula(
f,
flags: args.flags_only,
force_bottle: args.force_bottle?,
build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
debug: args.debug?,
quiet: args.quiet?,
verbose: args.verbose?,
git: args.git?,
)
Cleanup.install_formula_clean!(f.formula)
end
Upgrade.upgrade_dependents(
dependants, formulae,
flags: args.flags_only,
force_bottle: args.force_bottle?,
build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?,
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
debug: args.debug?,
quiet: args.quiet?,
verbose: args.verbose?
)
end
if casks.any?
Install.ask_casks casks if args.ask?
Cask::Reinstall.reinstall_casks(
*casks,
binaries: args.binaries?,

View File

@ -40,7 +40,8 @@ module Homebrew
switch "--eval-all",
depends_on: "--desc",
description: "Evaluate all available formulae and casks, whether installed or not, to search their " \
"descriptions. Implied if `$HOMEBREW_EVAL_ALL` is set."
"descriptions.",
env: :eval_all
switch "--pull-request",
description: "Search for GitHub pull requests containing <text>."
switch "--open",
@ -70,7 +71,7 @@ module Homebrew
string_or_regex = Search.query_regexp(query)
if args.desc?
if !args.eval_all? && !Homebrew::EnvConfig.eval_all? && Homebrew::EnvConfig.no_install_from_api?
if !args.eval_all? && Homebrew::EnvConfig.no_install_from_api?
raise UsageError, "`brew search --desc` needs `--eval-all` passed or `$HOMEBREW_EVAL_ALL` set!"
end

View File

@ -54,7 +54,7 @@ module Homebrew
flag "--file=", description: "Use the service file from this location to `start` the service."
flag "--sudo-service-user=", description: "When run as root on macOS, run the service(s) as this user."
flag "--max-wait=", description: "Wait at most this many seconds for `stop` to finish stopping a service. " \
"Omit this flag or set this to zero (0) seconds to wait indefinitely."
"Defaults to 60. Set this to zero (0) seconds to wait indefinitely."
switch "--all", description: "Run <subcommand> on all services."
switch "--json", description: "Output as JSON."
switch "--no-wait", description: "Don't wait for `stop` to finish stopping the service."
@ -177,7 +177,7 @@ module Homebrew
targets,
verbose: args.verbose?,
no_wait: args.no_wait?,
max_wait: args.max_wait.to_f,
max_wait: args.max_wait&.to_f || 60.0,
keep: args.keep?,
)
when *Homebrew::Services::Commands::Kill::TRIGGERS

View File

@ -13,18 +13,20 @@ module Homebrew
description <<~EOS
Valid shells: bash|csh|fish|pwsh|sh|tcsh|zsh
Print export statements. When run in a shell, this installation of Homebrew will be added to your `PATH`, `MANPATH`, and `INFOPATH`.
Print export statements. When run in a shell, this installation of Homebrew will be added to your
`$PATH`, `$MANPATH`, and `$INFOPATH`.
The variables `$HOMEBREW_PREFIX`, `$HOMEBREW_CELLAR` and `$HOMEBREW_REPOSITORY` are also exported to avoid
querying them multiple times.
To help guarantee idempotence, this command produces no output when Homebrew's `bin` and `sbin` directories
are first and second respectively in your `PATH`. Consider adding evaluation of this command's output to
are first and second respectively in your `$PATH`. Consider adding evaluation of this command's output to
your dotfiles (e.g. `~/.bash_profile` or ~/.zprofile` on macOS and ~/.bashrc` or ~/.zshrc` on Linux) with:
`eval "$(brew shellenv)"`
The shell can be specified explicitly with a supported shell name parameter. Unknown shells will output
POSIX exports.
EOS
named_args :shell
end
end

Some files were not shown because too many files have changed in this diff Show More