406 Commits

Author SHA1 Message Date
Rylan Polster
3dff8dfb62
Create DownloadQueue helper to check concurrency and initialize 2025-08-25 13:39:35 -04:00
Rylan Polster
f724e00830
Extract map_to_fully_loaded 2025-08-25 01:07:40 -04:00
Rylan Polster
a6031cb323
Set warn to false by default in named arg parsing 2025-08-25 00:34:09 -04:00
Rylan Polster
c0df920660
Parse named args from formula stubs 2025-08-25 00:34:09 -04:00
Mike McQuaid
3bbff84ff1
Merge pull request #20525 from Homebrew/utils_output
Move `o*` output methods to `Utils::Output`
2025-08-22 09:10:29 +00:00
Ruoyu Zhong
33a2f410af
cli/parser: convert switch env values to boolean
Since switch values are boolean, we should be returning the environment
variable's presence instead of its string value.

Fixes #20531.
2025-08-22 01:59:54 +08:00
Mike McQuaid
a1f112f3fe
Move o* output methods to Utils::Output
This reduces the surface area of our `Kernel` monkeypatch and removes
the need to `include Kernel` in a bunch of modules.

While we're here, also move `Kernel#require?` to `Homebrew` and fully
scope the calls to it.
2025-08-20 19:20:19 +01:00
Rylan Polster
0f9fb4f29a
Use API helper methods 2025-08-12 17:04:15 -04:00
Douglas Eichelberger
157992be17
Enable strict typing in Cask::Audit 2025-07-30 12:43:32 -07: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
Eric Knibbe
3dc9e88542
parser: show related env var in switch description 2025-06-03 13:57:42 -04:00
Douglas Eichelberger
8253e89eea
Improve readability of disabled command message 2025-05-10 09:23:34 -07:00
Patrick Linnane
c6a2fa335d
brew style --fix 2025-05-05 14:35:08 -07:00
Mike McQuaid
c9a7b62b1d
Homebrew 4.5 deprecations/disables/removals
The usual cycle of deprecating, disabling, and removing things in
Homebrew major/minor releases.
2025-04-22 17:15:23 +01:00
Douglas Eichelberger
ce9216e66c Fix use of tap 2024-12-08 10:28:10 -08:00
Douglas Eichelberger
73046d68ff Make cli_args idiomatic 2024-12-08 10:28:10 -08:00
Douglas Eichelberger
aa7da18d88 Access table internally 2024-12-08 10:28:10 -08:00
Douglas Eichelberger
659f993dab Avoid exposing table 2024-12-08 10:28:10 -08:00
Douglas Eichelberger
6d19b84ef1 Fix args validation 2024-12-08 10:28:10 -08:00
Douglas Eichelberger
2902eec390 Use table lookups 2024-12-08 10:28:10 -08:00
Douglas Eichelberger
1a83801587 Add special case for #tap 2024-12-08 10:28:10 -08:00
Douglas Eichelberger
fef1211c19 Use method result table
foo
2024-12-08 10:28:10 -08:00
Douglas Eichelberger
3ea76b8498 Avoid re-defining #formula? 2024-12-08 10:28:09 -08:00
Douglas Eichelberger
3a4243742f Remove OpenStruct from CLI::Args 2024-12-08 10:27:49 -08:00
Douglas Eichelberger
06aaeafa4f Minor CLI code improvements 2024-12-07 08:09:15 -08:00
Douglas Eichelberger
9a2b386a52 Remove unsafe references from CLI and Formulary code 2024-12-06 11:06:27 -08:00
Douglas Eichelberger
90d066c7b8 Tidy up layout 2024-12-04 08:00:32 -08:00
Douglas Eichelberger
e1fdd2eda4 Enable strict typing in NamedArgs 2024-12-03 17:43:22 -08:00
Douglas Eichelberger
89e640c567 Remove OpenStruct from Uses cmd 2024-11-22 21:04:51 -08:00
Mike McQuaid
94416e82f0
Add new odeprecated, odisabled, remove disabled code.
Prepare the usual deprecation cycle for Homebrew 4.4.0.
2024-09-24 10:15:34 +01:00
Douglas Eichelberger
eeb31d3050 Fix violations 2024-09-20 11:07:00 -07:00
Douglas Eichelberger
7cd329c116 Makes args readable 2024-09-19 10:58:53 -07:00
Douglas Eichelberger
27e951c408 Replace undef with prepended modules 2024-09-19 10:58:53 -07:00
Carlo Cabrera
2101411c0a
cli/named_args: update package_conflicts_message
Let's also show users the right way to silence this message.

Follow-up to #18330.
2024-09-17 00:23:15 +08:00
Mike McQuaid
8fd78bffce
Merge pull request #18330 from Homebrew/package-conflicts-message-quiet
cli/named_args: silence `package_conflicts_message` with `--quiet`
2024-09-16 17:00:04 +01:00
Bo Anderson
eb93d844d8
Fix NoSuchKegFromTapError handling 2024-09-16 05:46:14 +01:00
Carlo Cabrera
150e14f83d
cli/named_args: silence package_conflicts_message with --quiet
Based on feedback from Homebrew/discussions#5602.

While users can already silence this by passing `--formula` or `--cask`
as required, I am inclined to agree that `--quiet` should probably
silence messages that are relatively low priority (of which I think this
is one).
2024-09-15 18:51:06 +08:00
Rylan Polster
8cb62b1398
Set correct tap when loading installed casks 2024-09-10 13:34:40 -04:00
Douglas Eichelberger
7acddd7eb2 Remove unused processed option element 2024-08-19 13:19:56 -07:00
Douglas Eichelberger
4bbad3c995 Add documentation for OptionsType 2024-08-19 09:47:16 -07:00
Douglas Eichelberger
3943ff1406 Strict type Homebrew::CLI::Args 2024-08-18 20:30:58 -07:00
Mike McQuaid
02d414d79b
Merge pull request #18008 from Homebrew/deprecate-old-style-cmds 2024-08-14 07:45:13 +01:00
Douglas Eichelberger
becb84fc65
Update Library/Homebrew/cli/parser.rb
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2024-08-13 13:03:48 -07:00
Issy Long
45978435e7
rubocop: Use Sorbet/StrictSigil as it's better than comments
- Previously I thought that comments were fine to discourage people from
  wasting their time trying to bump things that used `undef` that Sorbet
  didn't support. But RuboCop is better at this since it'll complain if
  the comments are unnecessary.

- Suggested in https://github.com/Homebrew/brew/pull/18018#issuecomment-2283369501.

- I've gone for a mixture of `rubocop:disable` for the files that can't
  be `typed: strict` (use of undef, required before everything else, etc)
  and `rubocop:todo` for everything else that should be tried to make
  strictly typed. There's no functional difference between the two as
  `rubocop:todo` is `rubocop:disable` with a different name.

- And I entirely disabled the cop for the docs/ directory since
  `typed: strict` isn't going to gain us anything for some Markdown
  linting config files.

- This means that now it's easier to track what needs to be done rather
  than relying on checklists of files in our big Sorbet issue:

```shell
$ git grep 'typed: true # rubocop:todo Sorbet/StrictSigil' | wc -l
    268
```

- And this is confirmed working for new files:

```shell
$ git status
On branch use-rubocop-for-sorbet-strict-sigils
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Library/Homebrew/bad.rb
        Library/Homebrew/good.rb

nothing added to commit but untracked files present (use "git add" to track)

$ brew style
Offenses:

bad.rb:1:1: C: Sorbet/StrictSigil: Sorbet sigil should be at least strict got true.
^^^^^^^^^^^^^

1340 files inspected, 1 offense detected
```
2024-08-12 15:24:27 +01:00
Douglas Eichelberger
f7e17713a2 Update message, as there is a replacement 2024-08-10 11:55:43 -07:00
Douglas Eichelberger
d554c11b4c Add docs link 2024-08-10 11:20:53 -07:00
Douglas Eichelberger
a0a7f355d5 Create dummy brew cmd 2024-08-10 11:20:53 -07:00
Douglas Eichelberger
4fd659797f Deprecate invoking commands in the old style 2024-08-10 11:20:47 -07:00
Issy Long
0e81efcccb
sorbet: Comment more files that can't be strict because of undef
- Found with
  `grep -rL "# typed: strict" Library/Homebrew | xargs grep -l "undef "`.
- This stops people from trying to bump them and
  getting an error that they can't fix because
  [it's a Sorbet limitation](https://sorbet.org/docs/error-reference#3008),
  wasting contributor time.
2024-08-09 18:23:00 +01:00
Mike McQuaid
5bdd19d3eb
cli/named_args: improve missing_formula requires.
Let's make these more tightly scoped instead.
2024-07-25 12:54:03 +01:00