mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Merge pull request #17125 from Homebrew/brew-list-manual-auto
cmd/list: support listing formulae installed on request or automatically
This commit is contained in:
commit
966454c97d
@ -7,6 +7,7 @@ require "formula"
|
|||||||
require "cli/parser"
|
require "cli/parser"
|
||||||
require "cask/list"
|
require "cask/list"
|
||||||
require "system_command"
|
require "system_command"
|
||||||
|
require "tab"
|
||||||
|
|
||||||
module Homebrew
|
module Homebrew
|
||||||
module Cmd
|
module Cmd
|
||||||
@ -36,6 +37,11 @@ module Homebrew
|
|||||||
switch "--pinned",
|
switch "--pinned",
|
||||||
description: "List only pinned formulae, or only the specified (pinned) " \
|
description: "List only pinned formulae, or only the specified (pinned) " \
|
||||||
"formulae if <formula> are provided. See also `pin`, `unpin`."
|
"formulae if <formula> are provided. See also `pin`, `unpin`."
|
||||||
|
switch "--installed-on-request",
|
||||||
|
description: "List the formulae installed on request."
|
||||||
|
switch "--installed-as-dependency",
|
||||||
|
description: "List the formulae installed as dependencies."
|
||||||
|
|
||||||
# passed through to ls
|
# passed through to ls
|
||||||
switch "-1",
|
switch "-1",
|
||||||
description: "Force output to be one entry per line. " \
|
description: "Force output to be one entry per line. " \
|
||||||
@ -54,11 +60,18 @@ module Homebrew
|
|||||||
conflicts "--pinned", "--cask"
|
conflicts "--pinned", "--cask"
|
||||||
conflicts "--multiple", "--cask"
|
conflicts "--multiple", "--cask"
|
||||||
conflicts "--pinned", "--multiple"
|
conflicts "--pinned", "--multiple"
|
||||||
|
["--installed-on-request", "--installed-as-dependency"].each do |flag|
|
||||||
|
conflicts "--cask", flag
|
||||||
|
conflicts "--versions", flag
|
||||||
|
conflicts "--pinned", flag
|
||||||
|
end
|
||||||
["-1", "-l", "-r", "-t"].each do |flag|
|
["-1", "-l", "-r", "-t"].each do |flag|
|
||||||
conflicts "--versions", flag
|
conflicts "--versions", flag
|
||||||
conflicts "--pinned", flag
|
conflicts "--pinned", flag
|
||||||
end
|
end
|
||||||
["--versions", "--pinned", "-l", "-r", "-t"].each do |flag|
|
["--versions", "--pinned",
|
||||||
|
"---installed-on-request", "--installed-as-dependency",
|
||||||
|
"-l", "-r", "-t"].each do |flag|
|
||||||
conflicts "--full-name", flag
|
conflicts "--full-name", flag
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -91,6 +104,28 @@ module Homebrew
|
|||||||
elsif args.versions?
|
elsif args.versions?
|
||||||
filtered_list unless args.cask?
|
filtered_list unless args.cask?
|
||||||
list_casks if args.cask? || (!args.formula? && !args.multiple? && args.no_named?)
|
list_casks if args.cask? || (!args.formula? && !args.multiple? && args.no_named?)
|
||||||
|
elsif args.installed_on_request? || args.installed_as_dependency?
|
||||||
|
unless args.no_named?
|
||||||
|
raise UsageError,
|
||||||
|
"Cannot use `--installed-on-request` or " \
|
||||||
|
"`--installed-as-dependency` with formula arguments."
|
||||||
|
end
|
||||||
|
|
||||||
|
Formula.installed.sort.each do |formula|
|
||||||
|
tab = Tab.for_formula(formula)
|
||||||
|
|
||||||
|
if args.installed_on_request? && args.installed_as_dependency?
|
||||||
|
statuses = []
|
||||||
|
statuses << "installed on request" if tab.installed_on_request
|
||||||
|
statuses << "installed as dependency" if tab.installed_as_dependency
|
||||||
|
next if statuses.empty?
|
||||||
|
|
||||||
|
puts "#{formula.name}: #{statuses.join(", ")}"
|
||||||
|
elsif (args.installed_on_request? && tab.installed_on_request) ||
|
||||||
|
(args.installed_as_dependency? && tab.installed_as_dependency)
|
||||||
|
puts formula.name
|
||||||
|
end
|
||||||
|
end
|
||||||
elsif args.no_named?
|
elsif args.no_named?
|
||||||
ENV["CLICOLOR"] = nil
|
ENV["CLICOLOR"] = nil
|
||||||
|
|
||||||
|
@ -25,6 +25,12 @@ class Homebrew::Cmd::List::Args < Homebrew::CLI::Args
|
|||||||
sig { returns(T::Boolean) }
|
sig { returns(T::Boolean) }
|
||||||
def full_name?; end
|
def full_name?; end
|
||||||
|
|
||||||
|
sig { returns(T::Boolean) }
|
||||||
|
def installed_as_dependency?; end
|
||||||
|
|
||||||
|
sig { returns(T::Boolean) }
|
||||||
|
def installed_on_request?; end
|
||||||
|
|
||||||
sig { returns(T::Boolean) }
|
sig { returns(T::Boolean) }
|
||||||
def l?; end
|
def l?; end
|
||||||
|
|
||||||
|
@ -19,8 +19,10 @@ RSpec.describe Tapioca::Compilers::Args do
|
|||||||
describe "#args_table" do
|
describe "#args_table" do
|
||||||
it "returns a mapping of list args to default values" do
|
it "returns a mapping of list args to default values" do
|
||||||
expect(compiler.args_table(list_parser).keys).to contain_exactly(
|
expect(compiler.args_table(list_parser).keys).to contain_exactly(
|
||||||
:"1?", :cask?, :casks?, :d?, :debug?, :formula?, :formulae?, :full_name?, :h?, :help?, :l?, :multiple?,
|
:"1?", :cask?, :casks?, :d?, :debug?, :formula?, :formulae?,
|
||||||
:pinned?, :q?, :quiet?, :r?, :t?, :v?, :verbose?, :versions?
|
:full_name?, :h?, :help?, :installed_as_dependency?,
|
||||||
|
:installed_on_request?, :l?, :multiple?, :pinned?,
|
||||||
|
:q?, :quiet?, :r?, :t?, :v?, :verbose?, :versions?
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1422,6 +1422,8 @@ _brew_list() {
|
|||||||
--formula
|
--formula
|
||||||
--full-name
|
--full-name
|
||||||
--help
|
--help
|
||||||
|
--installed-as-dependency
|
||||||
|
--installed-on-request
|
||||||
--multiple
|
--multiple
|
||||||
--pinned
|
--pinned
|
||||||
--quiet
|
--quiet
|
||||||
@ -1524,6 +1526,8 @@ _brew_ls() {
|
|||||||
--formula
|
--formula
|
||||||
--full-name
|
--full-name
|
||||||
--help
|
--help
|
||||||
|
--installed-as-dependency
|
||||||
|
--installed-on-request
|
||||||
--multiple
|
--multiple
|
||||||
--pinned
|
--pinned
|
||||||
--quiet
|
--quiet
|
||||||
|
@ -997,6 +997,8 @@ __fish_brew_complete_arg 'list' -l debug -d 'Display any debugging information'
|
|||||||
__fish_brew_complete_arg 'list' -l formula -d 'List only formulae, or treat all named arguments as formulae'
|
__fish_brew_complete_arg 'list' -l formula -d 'List only formulae, or treat all named arguments as formulae'
|
||||||
__fish_brew_complete_arg 'list' -l full-name -d 'Print formulae with fully-qualified names. Unless `--full-name`, `--versions` or `--pinned` are passed, other options (i.e. `-1`, `-l`, `-r` and `-t`) are passed to `ls`(1) which produces the actual output'
|
__fish_brew_complete_arg 'list' -l full-name -d 'Print formulae with fully-qualified names. Unless `--full-name`, `--versions` or `--pinned` are passed, other options (i.e. `-1`, `-l`, `-r` and `-t`) are passed to `ls`(1) which produces the actual output'
|
||||||
__fish_brew_complete_arg 'list' -l help -d 'Show this message'
|
__fish_brew_complete_arg 'list' -l help -d 'Show this message'
|
||||||
|
__fish_brew_complete_arg 'list' -l installed-as-dependency -d 'List the formulae installed as dependencies'
|
||||||
|
__fish_brew_complete_arg 'list' -l installed-on-request -d 'List the formulae installed on request'
|
||||||
__fish_brew_complete_arg 'list' -l multiple -d 'Only show formulae with multiple versions installed'
|
__fish_brew_complete_arg 'list' -l multiple -d 'Only show formulae with multiple versions installed'
|
||||||
__fish_brew_complete_arg 'list' -l pinned -d 'List only pinned formulae, or only the specified (pinned) formulae if formula are provided. See also `pin`, `unpin`'
|
__fish_brew_complete_arg 'list' -l pinned -d 'List only pinned formulae, or only the specified (pinned) formulae if formula are provided. See also `pin`, `unpin`'
|
||||||
__fish_brew_complete_arg 'list' -l quiet -d 'Make some output more quiet'
|
__fish_brew_complete_arg 'list' -l quiet -d 'Make some output more quiet'
|
||||||
@ -1063,6 +1065,8 @@ __fish_brew_complete_arg 'ls' -l debug -d 'Display any debugging information'
|
|||||||
__fish_brew_complete_arg 'ls' -l formula -d 'List only formulae, or treat all named arguments as formulae'
|
__fish_brew_complete_arg 'ls' -l formula -d 'List only formulae, or treat all named arguments as formulae'
|
||||||
__fish_brew_complete_arg 'ls' -l full-name -d 'Print formulae with fully-qualified names. Unless `--full-name`, `--versions` or `--pinned` are passed, other options (i.e. `-1`, `-l`, `-r` and `-t`) are passed to `ls`(1) which produces the actual output'
|
__fish_brew_complete_arg 'ls' -l full-name -d 'Print formulae with fully-qualified names. Unless `--full-name`, `--versions` or `--pinned` are passed, other options (i.e. `-1`, `-l`, `-r` and `-t`) are passed to `ls`(1) which produces the actual output'
|
||||||
__fish_brew_complete_arg 'ls' -l help -d 'Show this message'
|
__fish_brew_complete_arg 'ls' -l help -d 'Show this message'
|
||||||
|
__fish_brew_complete_arg 'ls' -l installed-as-dependency -d 'List the formulae installed as dependencies'
|
||||||
|
__fish_brew_complete_arg 'ls' -l installed-on-request -d 'List the formulae installed on request'
|
||||||
__fish_brew_complete_arg 'ls' -l multiple -d 'Only show formulae with multiple versions installed'
|
__fish_brew_complete_arg 'ls' -l multiple -d 'Only show formulae with multiple versions installed'
|
||||||
__fish_brew_complete_arg 'ls' -l pinned -d 'List only pinned formulae, or only the specified (pinned) formulae if formula are provided. See also `pin`, `unpin`'
|
__fish_brew_complete_arg 'ls' -l pinned -d 'List only pinned formulae, or only the specified (pinned) formulae if formula are provided. See also `pin`, `unpin`'
|
||||||
__fish_brew_complete_arg 'ls' -l quiet -d 'Make some output more quiet'
|
__fish_brew_complete_arg 'ls' -l quiet -d 'Make some output more quiet'
|
||||||
|
@ -1234,13 +1234,15 @@ _brew_linkage() {
|
|||||||
_brew_list() {
|
_brew_list() {
|
||||||
_arguments \
|
_arguments \
|
||||||
'--debug[Display any debugging information]' \
|
'--debug[Display any debugging information]' \
|
||||||
'(--versions --pinned --l --r --t)--full-name[Print formulae with fully-qualified names. Unless `--full-name`, `--versions` or `--pinned` are passed, other options (i.e. `-1`, `-l`, `-r` and `-t`) are passed to `ls`(1) which produces the actual output]' \
|
'(--versions --pinned ---installed-on-request --installed-as-dependency --l --r --t)--full-name[Print formulae with fully-qualified names. Unless `--full-name`, `--versions` or `--pinned` are passed, other options (i.e. `-1`, `-l`, `-r` and `-t`) are passed to `ls`(1) which produces the actual output]' \
|
||||||
'--help[Show this message]' \
|
'--help[Show this message]' \
|
||||||
|
'(--cask --versions --pinned --full-name)--installed-as-dependency[List the formulae installed as dependencies]' \
|
||||||
|
'(--cask --versions --pinned)--installed-on-request[List the formulae installed on request]' \
|
||||||
'(--cask --pinned)--multiple[Only show formulae with multiple versions installed]' \
|
'(--cask --pinned)--multiple[Only show formulae with multiple versions installed]' \
|
||||||
'(--cask --multiple --1 --l --r --t --full-name)--pinned[List only pinned formulae, or only the specified (pinned) formulae if formula are provided. See also `pin`, `unpin`]' \
|
'(--cask --multiple --installed-on-request --installed-as-dependency --1 --l --r --t --full-name)--pinned[List only pinned formulae, or only the specified (pinned) formulae if formula are provided. See also `pin`, `unpin`]' \
|
||||||
'--quiet[Make some output more quiet]' \
|
'--quiet[Make some output more quiet]' \
|
||||||
'--verbose[Make some output more verbose]' \
|
'--verbose[Make some output more verbose]' \
|
||||||
'(--1 --l --r --t --full-name)--versions[Show the version number for installed formulae, or only the specified formulae if formula are provided]' \
|
'(--installed-on-request --installed-as-dependency --1 --l --r --t --full-name)--versions[Show the version number for installed formulae, or only the specified formulae if formula are provided]' \
|
||||||
'-1[Force output to be one entry per line. This is the default when output is not to a terminal]' \
|
'-1[Force output to be one entry per line. This is the default when output is not to a terminal]' \
|
||||||
'-l[List formulae and/or casks in long format. Has no effect when a formula or cask name is passed as an argument]' \
|
'-l[List formulae and/or casks in long format. Has no effect when a formula or cask name is passed as an argument]' \
|
||||||
'-r[Reverse the order of the formulae and/or casks sort to list the oldest entries first. Has no effect when a formula or cask name is passed as an argument]' \
|
'-r[Reverse the order of the formulae and/or casks sort to list the oldest entries first. Has no effect when a formula or cask name is passed as an argument]' \
|
||||||
@ -1249,7 +1251,7 @@ _brew_list() {
|
|||||||
'(--cask)--formula[List only formulae, or treat all named arguments as formulae]' \
|
'(--cask)--formula[List only formulae, or treat all named arguments as formulae]' \
|
||||||
'*::installed_formula:__brew_installed_formulae' \
|
'*::installed_formula:__brew_installed_formulae' \
|
||||||
- installed_cask \
|
- installed_cask \
|
||||||
'(--formula --pinned --multiple)--cask[List only casks, or treat all named arguments as casks]' \
|
'(--formula --pinned --multiple --installed-on-request --installed-as-dependency)--cask[List only casks, or treat all named arguments as casks]' \
|
||||||
'*::installed_cask:__brew_installed_casks'
|
'*::installed_cask:__brew_installed_casks'
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1315,13 +1317,15 @@ _brew_log() {
|
|||||||
_brew_ls() {
|
_brew_ls() {
|
||||||
_arguments \
|
_arguments \
|
||||||
'--debug[Display any debugging information]' \
|
'--debug[Display any debugging information]' \
|
||||||
'(--versions --pinned --l --r --t)--full-name[Print formulae with fully-qualified names. Unless `--full-name`, `--versions` or `--pinned` are passed, other options (i.e. `-1`, `-l`, `-r` and `-t`) are passed to `ls`(1) which produces the actual output]' \
|
'(--versions --pinned ---installed-on-request --installed-as-dependency --l --r --t)--full-name[Print formulae with fully-qualified names. Unless `--full-name`, `--versions` or `--pinned` are passed, other options (i.e. `-1`, `-l`, `-r` and `-t`) are passed to `ls`(1) which produces the actual output]' \
|
||||||
'--help[Show this message]' \
|
'--help[Show this message]' \
|
||||||
|
'(--cask --versions --pinned --full-name)--installed-as-dependency[List the formulae installed as dependencies]' \
|
||||||
|
'(--cask --versions --pinned)--installed-on-request[List the formulae installed on request]' \
|
||||||
'(--cask --pinned)--multiple[Only show formulae with multiple versions installed]' \
|
'(--cask --pinned)--multiple[Only show formulae with multiple versions installed]' \
|
||||||
'(--cask --multiple --1 --l --r --t --full-name)--pinned[List only pinned formulae, or only the specified (pinned) formulae if formula are provided. See also `pin`, `unpin`]' \
|
'(--cask --multiple --installed-on-request --installed-as-dependency --1 --l --r --t --full-name)--pinned[List only pinned formulae, or only the specified (pinned) formulae if formula are provided. See also `pin`, `unpin`]' \
|
||||||
'--quiet[Make some output more quiet]' \
|
'--quiet[Make some output more quiet]' \
|
||||||
'--verbose[Make some output more verbose]' \
|
'--verbose[Make some output more verbose]' \
|
||||||
'(--1 --l --r --t --full-name)--versions[Show the version number for installed formulae, or only the specified formulae if formula are provided]' \
|
'(--installed-on-request --installed-as-dependency --1 --l --r --t --full-name)--versions[Show the version number for installed formulae, or only the specified formulae if formula are provided]' \
|
||||||
'-1[Force output to be one entry per line. This is the default when output is not to a terminal]' \
|
'-1[Force output to be one entry per line. This is the default when output is not to a terminal]' \
|
||||||
'-l[List formulae and/or casks in long format. Has no effect when a formula or cask name is passed as an argument]' \
|
'-l[List formulae and/or casks in long format. Has no effect when a formula or cask name is passed as an argument]' \
|
||||||
'-r[Reverse the order of the formulae and/or casks sort to list the oldest entries first. Has no effect when a formula or cask name is passed as an argument]' \
|
'-r[Reverse the order of the formulae and/or casks sort to list the oldest entries first. Has no effect when a formula or cask name is passed as an argument]' \
|
||||||
@ -1330,7 +1334,7 @@ _brew_ls() {
|
|||||||
'(--cask)--formula[List only formulae, or treat all named arguments as formulae]' \
|
'(--cask)--formula[List only formulae, or treat all named arguments as formulae]' \
|
||||||
'*::installed_formula:__brew_installed_formulae' \
|
'*::installed_formula:__brew_installed_formulae' \
|
||||||
- installed_cask \
|
- installed_cask \
|
||||||
'(--formula --pinned --multiple)--cask[List only casks, or treat all named arguments as casks]' \
|
'(--formula --pinned --multiple --installed-on-request --installed-as-dependency)--cask[List only casks, or treat all named arguments as casks]' \
|
||||||
'*::installed_cask:__brew_installed_casks'
|
'*::installed_cask:__brew_installed_casks'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -749,6 +749,14 @@ paths within its current keg. If *`cask`* is provided, list its artifacts.
|
|||||||
: List only pinned formulae, or only the specified (pinned) formulae if
|
: List only pinned formulae, or only the specified (pinned) formulae if
|
||||||
*`formula`* are provided. See also `pin`, `unpin`.
|
*`formula`* are provided. See also `pin`, `unpin`.
|
||||||
|
|
||||||
|
`--installed-on-request`
|
||||||
|
|
||||||
|
: List the formulae installed on request.
|
||||||
|
|
||||||
|
`--installed-as-dependency`
|
||||||
|
|
||||||
|
: List the formulae installed as dependencies.
|
||||||
|
|
||||||
`-1`
|
`-1`
|
||||||
|
|
||||||
: Force output to be one entry per line. This is the default when output is not
|
: Force output to be one entry per line. This is the default when output is not
|
||||||
|
@ -470,6 +470,12 @@ Only show formulae with multiple versions installed\.
|
|||||||
\fB\-\-pinned\fP
|
\fB\-\-pinned\fP
|
||||||
List only pinned formulae, or only the specified (pinned) formulae if \fIformula\fP are provided\. See also \fBpin\fP, \fBunpin\fP\&\.
|
List only pinned formulae, or only the specified (pinned) formulae if \fIformula\fP are provided\. See also \fBpin\fP, \fBunpin\fP\&\.
|
||||||
.TP
|
.TP
|
||||||
|
\fB\-\-installed\-on\-request\fP
|
||||||
|
List the formulae installed on request\.
|
||||||
|
.TP
|
||||||
|
\fB\-\-installed\-as\-dependency\fP
|
||||||
|
List the formulae installed as dependencies\.
|
||||||
|
.TP
|
||||||
\fB\-1\fP
|
\fB\-1\fP
|
||||||
Force output to be one entry per line\. This is the default when output is not to a terminal\.
|
Force output to be one entry per line\. This is the default when output is not to a terminal\.
|
||||||
.TP
|
.TP
|
||||||
|
Loading…
x
Reference in New Issue
Block a user