6085 Commits

Author SHA1 Message Date
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
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
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
9d357b57d1
Merge pull request #20135 from Homebrew/forbid_dynamic_caveats
rubocops/caveats: check for dynamic caveats.
2025-06-20 07:57:06 +00:00
Anatoli Babenia
dce285458e Add test for name override with GitHub URLs 2025-06-19 16:28:48 +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
ccb3543c6c
Merge pull request #20126 from botantony/no_autobump_rubocops
rubocops: add `no_autobump!` rubocop
2025-06-18 14:33:37 +00:00
botantony
aecdcd4840
rubocops: add no_autobump! rubocop
Signed-off-by: botantony <antonsm21@gmail.com>
2025-06-18 16:16:12 +02:00
Anatoli Babenia
f738fce3d9
formula_creator: test GitHub repo call for archive|releases URLs 2025-06-18 15:07:44 +01: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
Mike McQuaid
c5d091af21
Refactor/typecheck create and formula_creator 2025-06-17 11:44:15 +01: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
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
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
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
Rylan Polster
54b349bb89
Revert "Only generate cask variations for supported macOS configurations" 2025-06-12 11:53:01 -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
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
Rylan Polster
e5667cb5ae
Only generate cask variations for supported macOS configurations 2025-06-11 20:30:14 -04:00
Rylan Polster
b242abfdf0
Fix cask API tests 2025-06-11 19:44:26 -04:00
Eric Knibbe
ea8152757e
rubocops/cask/no_overrides: avoid nested depends_on macos: 2025-06-10 14:31:58 -04: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
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
b8e2cddbbd
Preliminary macOS 26 (Tahoe) support 2025-06-09 21:41:49 +01: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
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
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
Rylan Polster
c03f70f1dc
Refactor OnSystem and SimulateSystem bottle tag handling 2025-06-03 11:57:17 -04: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
Rylan Polster
0f03757e8f
Shard JSON API by OS/Arch combination 2025-06-02 23:06:02 -04:00
Eric Knibbe
cd6777fc73
audits: quote and reword problem description text 2025-05-30 23:49:26 -04: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
Bo Anderson
418a771d12
bundle: add support for selective cleanup 2025-05-23 06:19:01 +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
Eric Knibbe
5027a9d2f2
cask/audit: skip audit_rosetta on Intel-only casks & OSes 2025-05-21 10:14:08 -04: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
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
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
Bo Anderson
288984bb0f
bundle/dsl: combine cask_args calls 2025-05-09 08:06:06 +01:00
Patrick Linnane
c6a2fa335d
brew style --fix 2025-05-05 14:35:08 -07: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
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