homebrew-cask/lib/cask/cli/list.rb

58 lines
1.5 KiB
Ruby

class Cask::CLI::List
def self.run(*arguments)
if arguments.any?
retval = list_casks(*arguments)
else
retval = list_installed
end
# retval is ternary: true/false/nil
if retval.nil? and not arguments.any?
opoo "nothing to list" # special case: avoid exit code
elsif retval.nil?
raise CaskError.new("nothing to list")
elsif ! retval
raise CaskError.new("listing incomplete")
end
end
def self.list_casks(*cask_names)
count = 0
cask_names.each do |cask_name|
odebug "Listing files for Cask #{cask_name}"
cask = Cask.load(cask_name)
if cask.installed?
count += 1
list_artifacts(cask)
list_files(cask)
else
opoo "#{cask} is not installed"
end
end
count == 0 ? nil : count == cask_names.length
end
def self.list_artifacts(cask)
artifacts = Cask::Artifact.for_cask(cask)
artifacts.each do |artifact|
summary = artifact.new(cask).summary
ohai summary[:english_description], summary[:contents] unless summary.empty?
end
end
def self.list_files(cask)
ohai "Raw contents of Cask directory:"
Cask::PrettyListing.new(cask).print
end
def self.list_installed
installed_casks = Cask.installed
columns = installed_casks.map(&:to_s)
puts_columns columns
columns.empty? ? nil : installed_casks.length == columns.length
end
def self.help
"with no args, lists installed casks; given installed casks, lists installed files"
end
end