Sha256: 6dea1a54fe53d865dcf9cb6b4bbe6a402336dae4ccefea910e32a8ffc31d919f

Contents?: true

Size: 721 Bytes

Versions: 4

Compression:

Stored size: 721 Bytes

Contents

class ListProjects < Struct.new :format, :criteria
  def call formatter = formatter, projects = projects
    formatter.present projects
  end

  def projects catalog = ProjectCatalog.load, criteria = criteria
    catalog.projects criteria
  end

  def formatter(format = format.present? ? eval(format) : default_format)
    ConsoleFormatter.new format
  end

  def default_format projects = projects
    {'Name' => 'name'}.merge list_properties_format properties
  end

  private

  def list_properties_format properties
    Hash[properties.map { |p| [p, "property('#{p}').try(:value)"] }]
  end

  def properties
    metrics.collect(&:name).flatten
  end

  def metrics
    projects.collect(&:metrics).flatten
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
techcor-0.0.4 lib/commands/list_projects.rb
techcor-0.0.3 lib/commands/list_projects.rb
techcor-0.0.2 lib/commands/list_projects.rb
techcor-0.0.1 lib/commands/list_projects.rb