22 Commits

Author SHA1 Message Date
Douglas Eichelberger
a4cdbaa966 Fix type error in DependenciesHelpers#dependents 2025-02-18 20:48:56 -08:00
Douglas Eichelberger
6b56c2ee5f Revert to_formulae_and_casks sig change 2025-02-16 15:41:57 -08:00
Douglas Eichelberger
ff7f70d8b6 Fix select_includes sig 2025-02-16 13:26:10 -08:00
Douglas Eichelberger
0037b1f626 Enable strict typing in DependenciesHelpers 2025-02-16 12:24:22 -08:00
Thierry Moisan
d5e94f2082
deps command: add --include-implicit flag 2024-12-24 15:28:47 -05:00
Bo Anderson
6db4ed2793
Replace some include Kernel usages with requires_ancestor 2024-08-20 19:10:14 +01: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
Markus Reiter
480e264d9a
Lint Ruby docs. 2024-05-01 11:35:21 +02:00
Markus Reiter
0f0055ede4
Make documentation @api private by default. 2024-04-26 19:04:20 +02:00
Mike McQuaid
ea2892f8ee
brew.rb: handle missing args. 2024-03-07 16:20:20 +00:00
apainintheneck
e314a43754 dependency_helpers: include required & use public_send
- Use .required? instead of .tags.empty?
- use .public_send
- modify .reject_ignores to be .select_includes
  - checks ignores first now
- Don't use runtime deps with --missing in `brew deps` command
2023-08-25 00:25:14 -07:00
apainintheneck
3cba4cbc19 dependency_helpers: rework recursive dependency resolution
This is a refactor/reworking of the dependency resolution methods
in the DependencyHelpers module. These methods are used by both
the `brew deps` and `brew uses` commands to get a specific set
of dependencies for the user based on multiple criteria.

Additive Options:
--include-build
--include-test
--include-optional

Subtractive Options:
--skip-recommended
--missing

When a user runs either command the only dependencies that are
included by default are recommended and runtime dependencies.
This is largely unchanged though we don't include all non-build
dependencies as recommended by default anymore.

The biggest change is that all installed dependencies are always
removed from the list now if the --missing option is passed.
This could get skipped before depending on the other options
that were passed. Essentially subtractive options now will
always be evaluated before additive ones (the docs will need to
be updated to make this clear).

Beyond that we have no special handling for the optional command
anymore. We used to check that the optional dependency was not
needed to build the formula but that seems redundant and confusing.
Essentially, the #recursive_includes command now behaves much more
like the #reject_ignores command (essentially the non-recursive version)
which is a good thing for consistency's sake.
2023-08-19 15:49:16 -07:00
Bo Anderson
53d513695a
Remove TapDependency 2023-07-04 13:31:58 +01:00
Carlo Cabrera
7962b3072b
dependencies_helpers: fix pruning of build/test deps
We need to check that a dependency is a build or test dependency before
checking that it is satisfied in order to prune dependencies as
requested correctly.

Before:

```
❯ brew deps esptool
ca-certificates
cmake
mpdecimal
openssl@1.1
openssl@3
pkg-config
python@3.11
readline
rust
six
sqlite
xz
```

After:

```
❯ brew deps esptool
ca-certificates
cffi
mpdecimal
openssl@1.1
pycparser
python@3.11
readline
six
sqlite
xz
```

Note: You will need build dependencies installed to reproduce the
"before" behaviour.

See #15445.
2023-06-06 15:44:08 +08:00
Robin Ury
dddec94fd7
Change: --skip-installed to --missing 2023-05-17 14:57:26 -05:00
Robin Ury
6aa9a0e57b
Add brew deps --skip-installed arg 2023-05-17 13:53:19 -05:00
Bo Anderson
e49a338896
Implement caching for dependency expansion 2021-03-20 16:56:00 +00:00
Mike McQuaid
9216d8abe6
rubocop-rails: make fixes. 2020-12-02 10:43:04 +00:00
Markus Reiter
24ae318a3d Move type annotations into files. 2020-10-10 14:59:39 +02:00
Markus Reiter
ad4e97391c Document DependenciesHelpers. 2020-08-26 03:13:58 +02:00
William Ma
72c672b814 Merge branch 'master' into integrate-uses 2020-08-01 12:12:09 -04:00
William Ma
e05538a7d9 Create DependenciesHelpers file, add tests 2020-07-31 11:35:45 -04:00