Derive service completions from Cellar paths #24009

Merged
p-linnane opened 7:48pm on September 16, 2026 wanted to merge 113 Ξ” into homebrew/brew main from
service-completions

Pull Request Overview

  • Opened on September 17, 2026
  • Status Merged
  • Commit count 2 with first commit September 17, 2026

Total Delta

113 Total Diff Delta

Open Days

Open 1 weekdays

Test Delta

0 Diff Delta in Test Files
Breakdown by Phase

How long has this pull request spent in each phase of its lifecycle?

Fraction of total time Business days Phase
 
0.0 days Authoring 1 commit before pull request opened for review
 
0.0 days Awaiting first review
 
0.1 days Revising work with 1 commit in response to 2 reviews that left 2 comments
 
1.9 days Merge to deploy (still awaiting deployment)

Total time for pull request 0.1 business days from first commit authored to merge
Still awaiting deployment

Author avatar

Derive service completions from Cellar paths

brew services tab completion extracted the service name with awk -F'homebrew.|.service' '{print $3}'. That regex only worked for the legacy homebrew.<name> files under /opt/homebrew, where the prefix supplied the extra match. It completes nothing for the current sh.brew.<name> files, for custom service names, and for any prefix without homebrew in its path such as /usr/local or Linuxbrew.

The Bash, fish and zsh completers now take the formula name from the Cellar directory ($(NF-2) of the path) and deduplicate with sort -u, so multiple installed versions of a formula produce one entry. The generated completions are regenerated from the templates.

To reproduce: brew install postgresql@18, then brew services start and press tab. Nothing is completed before this change.

Fixes #24006



  • [x] Have you followed our Contributing guidelines?

  • [x] Have you checked for other open Pull Requests for the same change?

  • [x] Have you explained what your changes do? Performance claims (e.g. "this is faster") must include brew benchmark results.

  • [x] Have you explained why you'd like these changes included, not just what they do?

  • [x] For bug fixes, have you given step-by-step brew commands to reproduce the bug?

  • [x] Have you written new tests (excluding integration tests)? Here's an example.

  • [x] Have you successfully run brew lgtm (style, typechecking and tests) locally?



  • [x] I did not use AI/LLM to create this PR, or I disclosed the tool/model below and reviewed its output; I did not attribute commits to AI and will answer maintainer questions and review comments myself without AI/LLM.

Claude Code (Fable 5.1) drafted the implementation and tests; I reviewed the diff, verified the new test fails without the fix and passes with it, and ran brew lgtm --online plus targeted specs.


Comments Threads Pending Resolution

MikeMcQuaid reviewed and approved this work on September 17, 2026
MikeMcQuaid left a comment

Thanks!

ljharb reviewed on September 17, 2026
ljharb left a comment

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Resolved Comment Threads

No resolved comments have been left on this PR.