This is useful for seeing when formulae are deleted if they are going to
leave behind any formulae that depend on them.
As a result, if there are any formulae returned return a non-zero/failed
exit status.
This is a temporary measure until:
- #1862 is merged
- I can a test on `brew uses` against every formula in the official
taps to verify that exceptions are no longer raised.
Fixes#1848 by sharing recursive dependency resolution between
dependencies and requirements.
Coincidentally, this also fixes the errors introduced by #1784 that
necessitated it being reverted in #1797.
Fixes#1776.
If any known formula had a dependency on an untapped tap,
Formula#recursive_dependencies would throw an exception, which would be
caught by the outer exception handler, causing the rest of the
dependencies for that formula to be skipped and incomplete output to be
generated.
To fix this, I added a check to avoid analysing the dependencies of
formulae from uninstalled taps.
Additionally, I removed the aforementioned outer exception handler added
in 5fdb89aed90f03413cdb21af430411c4a722876e, because the only other
place that should be capable of throwing such an exception is the
statement that was surrounded by another wider exception handler in
Homebrew/legacy-homebrew#40682.
For example, `brew deps libass --skip-recommended` shouldn't print
harfbuzz because, even though libass builds with harfbuzz when harfbuzz
is not skipped, we asked to skip recommended, of which harfbuzz is one.
The corresponding change is made for `brew uses` as well.
Thanks to Xu Cheng for contributing the code. Any errors are mine.
Closes#129.
Signed-off-by: ilovezfs <ilovezfs@icloud.com>
Also add support to `brew uses` to ignore build or optional dependencies.
ClosesHomebrew/homebrew#36154.
ClosesHomebrew/homebrew#36656.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Dependency names are prefixed with the tap location, therefore
dependency names do not match formula names. We convert dependencies
into formulas to ensure proper name checking.
ClosesHomebrew/homebrew#35058.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
`brew uses foo bar` is supposed to return the intersection of formulae
that use foo and bar. However, this was broken by changes made to
support requirements that can coerce to regular dependencies.
With that option iterate only over `Formula.installed`, otherwise
iterate over `Formula`. This is faster than iterating over all the
formulae and checking if it's installed.
FixesHomebrew/homebrew#27259.
ClosesHomebrew/homebrew#27295.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
The code was sucking. To the extent that maintenance was hard. It's a lot
easier to work with code that is sensibly split at sensible boundaries. So
now it is more like that.
But the refactor is minimal. Because we don't want you to have more merge
hell than absolutely necessary.
If you merge you will need to pay attention to brew.h.rb (as it is deleted)
and bin/brew (as command logic is gone). It will be painful, but you will just
have to help git out by moving any changes around manually.
Note compatibility.rb. It ensures that any function renames or removals don't
break anything. We're pretty serious about backwards compatibility. And that's
because we encourage you to hack around with the innards. And we couldn't do
that if we would then just make stuff disappear behind your back.