list: Replace Cask::Cmd with class method

This commit is contained in:
William Ma 2020-08-10 16:16:24 -04:00
parent 1644ec2f50
commit 7d8aad4656
2 changed files with 30 additions and 20 deletions

View File

@ -31,30 +31,39 @@ module Cask
end
def run
output = args.any? ? provided_list : Caskroom.casks
self.class.list_casks(
*casks,
json: json?,
one: one?,
full_name: full_name?,
versions: versions?,
)
end
if json?
def self.list_casks(*casks, json: false, one: false, full_name: false, versions: false)
output = if casks.any?
casks.each do |cask|
raise CaskNotInstalledError, cask unless cask.installed?
end
else
Caskroom.casks
end
if json
puts JSON.generate(output.map(&:to_h))
elsif one?
elsif one
puts output.map(&:to_s)
elsif full_name?
elsif full_name
puts output.map(&:full_name).sort(&tap_and_name_comparison)
elsif versions?
puts output.map(&self.class.method(:format_versioned))
elsif !output.empty? && args.any?
puts output.map(&self.class.method(:list_artifacts))
elsif versions
puts output.map(&method(:format_versioned))
elsif !output.empty? && casks.any?
puts output.map(&method(:list_artifacts))
elsif !output.empty?
puts Formatter.columns(output.map(&:to_s))
end
end
def provided_list
casks.each do |cask|
raise CaskNotInstalledError, cask unless cask.installed?
end
casks
end
def self.list_artifacts(cask)
cask.artifacts.group_by(&:class).each do |klass, artifacts|
next unless klass.respond_to?(:english_description)

View File

@ -168,11 +168,12 @@ module Homebrew
end
def list_casks(args:)
cask_list = Cask::Cmd::List.new args.named
cask_list.one = args.public_send(:'1?')
cask_list.versions = args.versions?
cask_list.full_name = args.full_name?
cask_list.run
Cask::Cmd::List.list_casks(
*args.loaded_casks,
one: args.public_send(:'1?'),
full_name: args.full_name?,
versions: args.versions?,
)
end
end