class Bake::Command::List
def call
def call first = true terminal = @parent.terminal context = @parent.context if scope = context.scope print_scope(terminal, context.scope) end context.loaders.each do |loader| terminal.print_line(:loader, loader) loader.each do |path| if scope = loader.scope_for(path) print_scope(terminal, scope) end end terminal.print_line end end
def format_parameters(parameters, terminal)
def format_parameters(parameters, terminal) parameters.each do |type, name| case type when :key name = "#{name}=" when :keyreq name = "#{name}=" when :keyrest name = "**options" else name = name.to_s end terminal.print(:reset, " ") terminal.print(type, name) end end
def format_recipe(recipe, terminal)
def format_recipe(recipe, terminal) terminal.print(:command, recipe.command) if parameters = recipe.parameters format_parameters(parameters, terminal) end end
def print_scope(terminal, scope)
def print_scope(terminal, scope) format_recipe = self.method(:format_recipe).curry scope.recipes.sort_by(&:command).each do |recipe| terminal.print_line terminal.print_line("\t", format_recipe[recipe]) recipe.description.each do |line| if match = line.match(PARAMETER) terminal.print_line("\t\t", :parameter, match[:name], :reset, " [", :type, match[:type], :reset, "] ", :description, match[:details] ) else terminal.print_line("\t\t", :description, line) end end end end