Sha256: 5af2c6a3e22101035ac5245e83f19df131b49765fc5351e8b1c8d1b0943de995

Contents?: true

Size: 725 Bytes

Versions: 4

Compression:

Stored size: 725 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 :last_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.8 lib/commands/list_projects.rb
techcor-0.0.7 lib/commands/list_projects.rb
techcor-0.0.6 lib/commands/list_projects.rb
techcor-0.0.5 lib/commands/list_projects.rb