Merge pull request #18133 from FnControlOption/ls

This commit is contained in:
Mike McQuaid 2024-08-23 08:06:49 +01:00 committed by GitHub
commit 9ee471d42c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 37 additions and 18 deletions

View File

@ -41,6 +41,10 @@ module Homebrew
description: "List the formulae installed on request."
switch "--installed-as-dependency",
description: "List the formulae installed as dependencies."
switch "--poured-from-bottle",
description: "List the formulae installed from a bottle."
switch "--built-from-source",
description: "List the formulae compiled from source."
# passed through to ls
switch "-1",
@ -60,7 +64,8 @@ module Homebrew
conflicts "--pinned", "--cask"
conflicts "--multiple", "--cask"
conflicts "--pinned", "--multiple"
["--installed-on-request", "--installed-as-dependency"].each do |flag|
["--installed-on-request", "--installed-as-dependency",
"--poured-from-bottle", "--built-from-source"].each do |flag|
conflicts "--cask", flag
conflicts "--versions", flag
conflicts "--pinned", flag
@ -71,6 +76,7 @@ module Homebrew
end
["--versions", "--pinned",
"---installed-on-request", "--installed-as-dependency",
"--poured-from-bottle", "--built-from-source",
"-l", "-r", "-t"].each do |flag|
conflicts "--full-name", flag
end
@ -104,25 +110,31 @@ module Homebrew
elsif args.versions?
filtered_list unless args.cask?
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
elsif args.installed_on_request? ||
args.installed_as_dependency? ||
args.poured_from_bottle? ||
args.built_from_source?
flags = []
flags << "`--installed-on-request`" if args.installed_on_request?
flags << "`--installed-as-dependency`" if args.installed_as_dependency?
flags << "`--poured-from-bottle`" if args.poured_from_bottle?
flags << "`--built-from-source`" if args.built_from_source?
raise UsageError, "Cannot use #{flags.join(", ")} with formula arguments." unless args.no_named?
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
statuses << "installed on request" if args.installed_on_request? && tab.installed_on_request
statuses << "installed as dependency" if args.installed_as_dependency? && tab.installed_as_dependency
statuses << "poured from bottle" if args.poured_from_bottle? && tab.poured_from_bottle
statuses << "built from source" if args.built_from_source? && !tab.poured_from_bottle
next if statuses.empty?
if flags.count > 1
puts "#{formula.name}: #{statuses.join(", ")}"
elsif (args.installed_on_request? && tab.installed_on_request) ||
(args.installed_as_dependency? && tab.installed_as_dependency)
else
puts formula.name
end
end

View File

@ -11,6 +11,9 @@ class Homebrew::Cmd::List
end
class Homebrew::Cmd::List::Args < Homebrew::CLI::Args
sig { returns(T::Boolean) }
def built_from_source?; end
sig { returns(T::Boolean) }
def cask?; end
@ -41,6 +44,9 @@ class Homebrew::Cmd::List::Args < Homebrew::CLI::Args
sig { returns(T::Boolean) }
def pinned?; end
sig { returns(T::Boolean) }
def poured_from_bottle?; end
sig { returns(T::Boolean) }
def r?; end

View File

@ -19,10 +19,11 @@ RSpec.describe Tapioca::Compilers::Args do
describe "#args_table" do
it "returns a mapping of list args to default values" do
expect(compiler.args_table(list_parser).keys).to contain_exactly(
:"1?", :cask?, :casks?, :d?, :debug?, :formula?, :formulae?,
:full_name?, :h?, :help?, :installed_as_dependency?,
:installed_on_request?, :l?, :multiple?, :pinned?,
:q?, :quiet?, :r?, :t?, :v?, :verbose?, :versions?
:"1?", :built_from_source?, :cask?, :casks?, :d?, :debug?,
:formula?, :formulae?, :full_name?, :h?, :help?,
:installed_as_dependency?, :installed_on_request?, :l?,
:multiple?, :pinned?, :poured_from_bottle?, :q?, :quiet?,
:r?, :t?, :v?, :verbose?, :versions?
)
end