class Kolekti::Runner

Attributes

collectors[R]
repository_path[R]
wanted_metric_configurations[R]

Public Class Methods

new(repository_path, wanted_metric_configurations, persistence_strategy) click to toggle source
# File lib/kolekti/runner.rb, line 20
def initialize(repository_path, wanted_metric_configurations, persistence_strategy)
  @repository_path = repository_path
  @wanted_metric_configurations = wanted_metric_configurations.map { |m| [m.metric.code, m] }.to_h
  @persistence_strategy = persistence_strategy
  @collectors = find_collectors
end

Public Instance Methods

clean_output() click to toggle source
# File lib/kolekti/runner.rb, line 33
def clean_output
  @collectors.each do |collector|
    collector.clean(@repository_path, @wanted_metric_configurations)
  end
end
run_wanted_metrics() click to toggle source
# File lib/kolekti/runner.rb, line 27
def run_wanted_metrics
  @collectors.each do |collector|
    collector.collect_metrics(@repository_path, @wanted_metric_configurations, @persistence_strategy)
  end
end

Private Instance Methods

find_collectors() click to toggle source
# File lib/kolekti/runner.rb, line 41
def find_collectors
  collectors = wanted_metric_configurations.map do |code, metric_configuration|
    collector_name = metric_configuration.metric.metric_collector_name
    found_collector = Kolekti.collectors.find do |collector|
      collector.name == collector_name && collector.supported_metrics.include?(code.to_sym)
    end
    raise UnavailableMetricError.new("No Metric Collector for metric code #{code}") if found_collector.nil?

    found_collector
  end

  collectors.uniq
end