Class: Teapot::Command::List
- Defined in:
- lib/teapot/command/list.rb
Overview
A command to list project definitions and dependencies.
Instance Method Summary collapse
-
#process(selection) ⇒ Object
Process and display the selection.
-
#terminal(output = $stdout) ⇒ Object
Create a terminal with custom styles for colorizing different definition types in output.
Methods inherited from Selection
Instance Method Details
#process(selection) ⇒ Object
Process and display the selection.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/teapot/command/list.rb', line 33 def process(selection) context = selection.context terminal = self.terminal selection.resolved.each do |package| terminal.puts "Package #{package.name} (from #{package.path}):" begin script = context.load(package) definitions = script.defined definitions.each do |definition| terminal.puts "\t#{definition}", style: :definition definition.description.each_line do |line| terminal.puts "\t\t#{line.chomp}", style: :description end if definition.description case definition when Project terminal.puts "\t\t- Summary: #{definition.summary}" if definition.summary terminal.puts "\t\t- License: #{definition.license}" if definition.license terminal.puts "\t\t- Website: #{definition.website}" if definition.website terminal.puts "\t\t- Version: #{definition.version}" if definition.version definition..each do || contact_text = [.email, .website].compact.collect{|text| " <#{text}>"}.join terminal.puts "\t\t- Author: #{.name}" + contact_text end when Target definition.dependencies.each do |dependency| terminal.puts "\t\t- #{dependency}", style: :dependency end definition.provisions.each do |name, provision| terminal.puts "\t\t- #{provision}", style: :provision end when Configuration definition.packages.each do |package| terminal.puts "\t\t- #{package}", style: :package end definition.imports.select(&:explicit).each do |import| terminal.puts "\t\t- import #{import.name}", style: :import end end end rescue MissingTeapotError => error terminal.puts "\t#{error.}", style: :error rescue IncompatibleTeapotError => error terminal.puts "\t#{error.}", style: :error end end end |
#terminal(output = $stdout) ⇒ Object
Create a terminal with custom styles for colorizing different definition types in output.
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/teapot/command/list.rb', line 20 def terminal(output = $stdout) Console::Terminal.for(output).tap do |terminal| terminal[:definition] = terminal.style(nil, nil, :bright) terminal[:dependency] = terminal.style(:blue) terminal[:provision] = terminal.style(:green) terminal[:package] = terminal.style(:yellow) terminal[:import] = terminal.style(:cyan) terminal[:error] = terminal.style(:red) end end |