Skip to content

[Automated] Update brew CLI Options - #4621

Open
thomhurst wants to merge 1 commit into
mainfrom
automated/update-cli-options-brew
Open

[Automated] Update brew CLI Options#4621
thomhurst wants to merge 1 commit into
mainfrom
automated/update-cli-options-brew

Conversation

@thomhurst

@thomhurst thomhurst commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Summary

This PR contains automatically generated updates to brew CLI options classes.

The generator scraped the latest CLI help output from the installed tool.

Changes

  • Updated options classes to reflect latest CLI documentation
  • Added new commands if any were detected
  • Updated option types and descriptions

Assembly-wide public API impact

Affected API families: Assembly/common, Brew.

  • Added APIs: 35
  • Removed or changed APIs: 2
  • Members with matching names but changed signatures: 0

Breaking changes are present. Consumers may need to update method arguments, option property types or nullability, enum members, and references to removed APIs.

Representative removed or changed members:

  • ModularPipelines.Homebrew.Options.BrewBundleInstallOptions.Jobs.get -> string?
  • ModularPipelines.Homebrew.Options.BrewBundleInstallOptions.Jobs.set -> void

Representative added members:

  • ModularPipelines.Homebrew.Options.BrewBenchmarkOptions
  • ModularPipelines.Homebrew.Options.BrewBenchmarkOptions.BrewBenchmarkOptions(ModularPipelines.Homebrew.Options.BrewBenchmarkOptions! original) -> void
  • ModularPipelines.Homebrew.Options.BrewBenchmarkOptions.BrewBenchmarkOptions(System.Collections.Generic.IEnumerable<string!>! Formula) -> void
  • ModularPipelines.Homebrew.Options.BrewBenchmarkOptions.Debug.get -> bool?
  • ModularPipelines.Homebrew.Options.BrewBenchmarkOptions.Debug.set -> void

Command coverage

Command coverage report:

  • brew (Homebrew 6.0.20): 122 commands, tree 0c701de73d7e728cba2bd96e3b9aa36c0025ba16c8f47f26b230e86d9ffc2e54
    • Baseline comparison: 121 commands at Homebrew 6.0.18 -> 122 commands at Homebrew 6.0.20
    • Added: brew benchmark

Verification

  • Solution builds successfully

🤖 Generated with ModularPipelines.OptionsGenerator

@thomhurst thomhurst added automated dependencies Pull requests that update a dependency file labels Sep 3, 2026
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • src/ModularPipelines.Homebrew/Generated/Brew.Generation.json is excluded by !**/generated/**

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 093c5498-86e3-4d2c-bab9-43b58d2513d3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 779b754e-20f9-4c9f-bfce-4ebdc1389222

📥 Commits

Reviewing files that changed from the base of the PR and between 69336ed and d9164fb.

⛔ Files ignored due to path filters (8)
  • src/ModularPipelines.Homebrew/Generated/Brew.CommandCoverage.json is excluded by !**/generated/**
  • src/ModularPipelines.Homebrew/Generated/Brew.Generation.json is excluded by !**/generated/**
  • src/ModularPipelines.Homebrew/Options/BrewBenchmarkOptions.Generated.cs is excluded by !**/*.generated.*
  • src/ModularPipelines.Homebrew/Options/BrewBundleInstallOptions.Generated.cs is excluded by !**/*.generated.*
  • src/ModularPipelines.Homebrew/Options/BrewTestsOptions.Generated.cs is excluded by !**/*.generated.*
  • src/ModularPipelines.Homebrew/Options/BrewVulnsOptions.Generated.cs is excluded by !**/*.generated.*
  • src/ModularPipelines.Homebrew/Services/Brew.Generated.cs is excluded by !**/*.generated.*
  • src/ModularPipelines.Homebrew/Services/IBrew.Generated.cs is excluded by !**/*.generated.*
📒 Files selected for processing (3)
  • docs/docs/mp-packages/cli/brew.md
  • src/ModularPipelines.Homebrew/PublicAPI.Shipped.txt
  • src/ModularPipelines.Homebrew/PublicAPI.Unshipped.txt
💤 Files with no reviewable changes (1)
  • src/ModularPipelines.Homebrew/PublicAPI.Shipped.txt

Included review availability: Your plan provides up to 4 included reviews per hour; 2 remain after this review.


📝 Walkthrough

Walkthrough

The Homebrew package adds the brew benchmark API and documentation. It adds properties to existing option types. The shipped API removes the previously released BrewBundleInstallOptions.Jobs property.

Changes

Homebrew CLI API

Layer / File(s) Summary
Benchmark command contract and documentation
src/ModularPipelines.Homebrew/PublicAPI.Unshipped.txt, docs/docs/mp-packages/cli/brew.md
The public API adds BrewBenchmarkOptions and IBrew.BenchmarkAsync. The CLI reference lists brew benchmark.
Existing option surface updates
src/ModularPipelines.Homebrew/PublicAPI.Unshipped.txt, src/ModularPipelines.Homebrew/PublicAPI.Shipped.txt
The unshipped API adds Jobs, LoadOnly, FixType, and ListSkipped. The shipped API removes BrewBundleInstallOptions.Jobs.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to d9164

This change adds Homebrew benchmark support, exposes updated option APIs, and documents the new command. The supplied implementation and API-surface evidence show no remaining merge-blocking risk.

Poem

A rabbit checks the brew command bright
Benchmark flags hop into sight
Jobs and options join the queue
The API map gains fields anew
Documentation follows too

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: updating Homebrew CLI options, including support for the new brew benchmark command.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch automated/update-cli-options-brew

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thomhurst
thomhurst force-pushed the automated/update-cli-options-brew branch from 141819b to d9164fb Compare September 4, 2026 12:05

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed this automated Homebrew CLI options regeneration (Homebrew 6.0.18 → 6.0.20).

Most of the diff is exactly what's expected from a scraper/generator refresh: new brew benchmark command + BrewBenchmarkOptions, removal of --jobs from BrewBundleInstallOptions (properly tracked as *REMOVED* in PublicAPI.Unshipped.txt), a new --list-skipped flag and --load-only flag, docs table update, and coverage/generation metadata bump. All PublicAPI tracking files and generated service methods (Brew.Generated.cs / IBrew.Generated.cs) are consistent with the new options.

One scraper bug surfaced by this update, in src/ModularPipelines.Homebrew/Options/BrewVulnsOptions.Generated.cs:

/// <summary>
/// Only report vulnerabilities that have a released version fix available. Shortcut for
/// </summary>
[CliFlag("--fix-available")]
public bool? FixAvailable { get; set; }

[CliOption("--fix-type", Format = OptionFormat.EqualsSeparated)]
public string? FixType { get; set; }

/// <summary>
/// Only report vulnerabilities that do not have a released version fix available (includes unreleased commit SHA patches). Shortcut for
/// </summary>
[CliFlag("--no-fix-available")]
public bool? NoFixAvailable { get; set; }

Homebrew's brew vulns --help text for --fix-available/--no-fix-available apparently continues onto a follow-up line (e.g. "...Shortcut for --fix-type=released" / "--fix-type=unreleased"), and the scraper split that continuation into a brand-new bare option (--fix-type) instead of folding it into the parent flag's description. The result is two XML doc comments that dangle mid-sentence on "Shortcut for", and a new FixType property with no doc comment at all — so a consumer gets no indication of what values it accepts (released/unreleased) or that it's related to the two flags above it.

Per CLAUDE.md this shouldn't be hand-patched in the generated file — the fix belongs in the scraper/generator's multi-line help-text parsing, so any other tool/command hitting the same continuation-line pattern is also fixed. Worth checking whether the scraper has a general rule for "this line is a continuation of the previous option's description" vs. "this line starts a new option" (e.g. based on indentation, or lack of a leading --flag token) — that's likely a generic, reusable fix rather than something specific to brew vulns.

Everything else in the diff (benchmark options, jobs removal, list-skipped/load-only additions, doc/coverage files) looks correct and consistent with prior generated output.

@thomhurst
thomhurst force-pushed the automated/update-cli-options-brew branch from d9164fb to 011e3ee Compare September 4, 2026 20:21
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Reviewed this automated Homebrew CLI options regeneration (Homebrew 6.0.18 → 6.0.20, head 011e3eed8).

Most of the diff is exactly what is expected from a scraper/generator refresh: new brew benchmark command + BrewBenchmarkOptions, removal of --jobs from BrewBundleInstallOptions (correctly tracked as *REMOVED* in PublicAPI.Unshipped.txt/PublicAPI.Shipped.txt), a new --load-only flag on BrewTestsOptions, a new --list-skipped flag on BrewVulnsOptions, the docs table update, and the coverage/generation metadata bump. PublicAPI.*.txt, Brew.Generated.cs, and IBrew.Generated.cs are all consistent with the new/removed options.

The scraper bug flagged in the previous review of this PR is still present and unaddressed, in src/ModularPipelines.Homebrew/Options/BrewVulnsOptions.Generated.cs:

/// <summary>
/// Only report vulnerabilities that have a released version fix available. Shortcut for
/// </summary>
[CliFlag("--fix-available")]
public bool? FixAvailable { get; set; }

[CliOption("--fix-type", Format = OptionFormat.EqualsSeparated)]
public string? FixType { get; set; }

/// <summary>
/// Only report vulnerabilities that do not have a released version fix available (includes unreleased commit SHA patches). Shortcut for
/// </summary>
[CliFlag("--no-fix-available")]
public bool? NoFixAvailable { get; set; }

Homebrew CLI help text for --fix-available/--no-fix-available continues onto a follow-up line (something like "...Shortcut for --fix-type=released" / "--fix-type=unreleased"), and the scraper is splitting that continuation line into a brand new, undocumented option (--fix-type) instead of folding it into the parent flag description. This produces two XML doc comments that dangle mid-sentence on "Shortcut for", and a new public FixType property with no doc comment at all — a consumer has no indication it accepts released/unreleased values or that it relates to the two flags above it.

This exact issue was already called out on the prior revision of this PR (head d9164fbd) and the generated output has not changed since, so the underlying scraper/generator logic does not appear to have been touched. Per CLAUDE.md, this should not be hand-patched in the generated .cs file — the fix belongs in the scraper or generator multi-line help-text parsing (for example, a rule to detect that a line is a continuation of the previous option description versus the start of a new option, based on indentation or the absence of a leading --flag token). That is a generic fix that also protects against the same failure mode recurring for other tools/commands with wrapped help text, rather than a one-off patch for brew vulns.

Everything else in the diff (benchmark options, jobs removal, list-skipped/load-only additions, doc/coverage files) is correct and consistent with prior generated output.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant