cmd/list: update switches and logic

This commit is contained in:
Ruoyu Zhong 2024-04-23 15:45:00 +08:00
parent 7cf6cb2624
commit ba85f92df2
No known key found for this signature in database

View File

@ -60,7 +60,7 @@ module Homebrew
conflicts "--pinned", "--cask" conflicts "--pinned", "--cask"
conflicts "--multiple", "--cask" conflicts "--multiple", "--cask"
conflicts "--pinned", "--multiple" conflicts "--pinned", "--multiple"
["--manual", "--auto"].each do |flag| ["--installed-on-request", "--installed-as-dependency"].each do |flag|
conflicts "--cask", flag conflicts "--cask", flag
conflicts "--versions", flag conflicts "--versions", flag
conflicts "--pinned", flag conflicts "--pinned", flag
@ -69,7 +69,8 @@ module Homebrew
conflicts "--versions", flag conflicts "--versions", flag
conflicts "--pinned", flag conflicts "--pinned", flag
end end
["--versions", "--pinned", "--manual", "--auto", ["--versions", "--pinned",
"---installed-on-request", "--installed-as-dependency",
"-l", "-r", "-t"].each do |flag| "-l", "-r", "-t"].each do |flag|
conflicts "--full-name", flag conflicts "--full-name", flag
end end
@ -103,20 +104,25 @@ 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.manual? || args.auto? elsif args.installed_on_request? || args.installed_as_dependency?
unless args.no_named? unless args.no_named?
raise UsageError, raise UsageError,
"Cannot use `--manual` or `--auto` with formula arguments." "Cannot use `--installed-on-request` or " \
"`--installed-as-dependency` with formula arguments."
end end
Formula.installed.sort.each do |formula| Formula.installed.sort.each do |formula|
tab = Tab.for_formula(formula) tab = Tab.for_formula(formula)
if args.manual? && args.auto? if args.installed_on_request? && args.installed_as_dependency?
status = tab.installed_on_request ? "manual" : "auto" statuses = []
puts "#{formula.name}: #{status}" statuses << "installed on request" if tab.installed_on_request
elsif (args.manual? && tab.installed_on_request) || statuses << "installed as dependency" if tab.installed_as_dependency
(args.auto? && !tab.installed_on_request) 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 puts formula.name
end end
end end