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
..
2023-08-12 22:01:22 -07:00
2023-08-04 16:43:13 +01:00
2023-06-19 00:12:59 +00:00
2023-08-12 22:01:22 -07:00
2023-08-17 00:24:19 +00:00
2023-08-17 04:16:02 -07:00
2023-08-16 01:34:19 +01:00
2023-08-12 22:01:22 -07:00
2023-08-16 12:01:25 +01:00
2023-04-24 20:42:39 -07:00
2023-05-12 21:17:30 +02:00
2023-04-24 20:42:39 -07:00
2023-04-24 20:42:39 -07:00
2023-04-24 20:42:39 -07:00
2023-04-24 20:42:39 -07:00
2023-08-12 22:01:22 -07:00
2023-07-18 08:52:49 -07:00
2023-05-17 15:26:46 +02:00
2023-08-04 16:43:13 +01:00
2023-08-12 22:01:22 -07:00
2023-07-06 16:56:20 +01:00
2023-08-04 16:43:13 +01:00
2023-04-24 20:42:39 -07:00
2023-05-20 19:28:29 +02:00
2023-08-04 16:43:13 +01:00
2023-08-16 01:34:19 +01:00
2023-04-24 20:42:39 -07:00
2023-04-24 20:42:39 -07:00
2023-07-18 10:59:27 +01:00
2023-06-24 11:09:28 +01:00
2023-04-24 20:42:39 -07:00
2023-04-27 05:15:43 +01:00
2023-04-24 20:42:39 -07:00
2023-05-06 03:27:42 +02:00
2023-04-24 20:42:39 -07:00
2023-04-24 20:42:39 -07:00
2023-04-24 20:42:39 -07:00
2023-05-12 21:17:30 +02:00
2023-04-24 20:42:39 -07:00
2023-04-24 20:42:39 -07:00
2023-05-09 05:08:38 +02:00
2023-04-24 20:42:39 -07:00
2023-07-06 16:56:20 +01:00
2023-08-04 16:43:13 +01:00
2023-04-25 09:26:24 -07:00
2023-05-09 01:13:55 +02:00
2023-04-24 20:42:38 -07:00
2023-04-24 20:42:39 -07:00
2023-08-12 22:01:22 -07:00
2023-04-24 20:42:39 -07:00
2023-05-11 12:33:27 +01:00
2023-08-12 22:01:22 -07:00
2023-08-10 16:08:47 +01:00
2023-04-24 20:42:39 -07:00
2023-04-24 20:42:39 -07:00

Homebrew Ruby API

This is the API for Homebrew.

The main class you should look at is the {Formula} class (and classes linked from there). That's the class that's used to create Homebrew formulae (i.e. package descriptions). Assume anything else you stumble upon is private.

You may also find the Formula Cookbook and Ruby Style Guide helpful in creating formulae.

Good luck!