Class: CodeStats::Metrics::Reporter::ConfigLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/code_stats/metrics/reporter/config_loader.rb

Constant Summary collapse

FILE_NAME =
'.codestats.yml'.freeze
CODE_STATS_HOME =
File.realpath(File.join(File.dirname(__FILE__), '..', '..', '..', '..'))
DEFAULT_FILE =
File.join(CODE_STATS_HOME, 'config', 'default.yml')

Class Method Summary collapse

Class Method Details

.load_default_fileObject



19
20
21
22
23
24
# File 'lib/code_stats/metrics/reporter/config_loader.rb', line 19

def load_default_file
  default_file = load_yml_file(DEFAULT_FILE)
  return if default_file.nil?
  @default_data = default_file['config'].merge(metrics_configs: [])
  load_default_metrics_configs(default_file['metrics'])
end

.load_default_metrics_configs(metrics) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/code_stats/metrics/reporter/config_loader.rb', line 40

def load_default_metrics_configs(metrics)
  metrics.each do |metric, metric_data|
    @default_data[:metrics_configs] << MetricConfig.new(
      metric_data.merge('metric' => metric)
    )
  end
end

.load_fileObject



13
14
15
16
17
# File 'lib/code_stats/metrics/reporter/config_loader.rb', line 13

def load_file
  load_default_file
  load_user_file
  @user_data || @default_data
end

.load_user_fileObject



26
27
28
29
30
31
32
# File 'lib/code_stats/metrics/reporter/config_loader.rb', line 26

def load_user_file
  user_file = load_yml_file(File.realpath(FILE_NAME))
  return if user_file.nil?
  @user_data = @default_data.merge(user_file['config'])
  @user_data[:metrics_configs] = []
  load_user_metrics_configs(user_file['metrics']) unless user_file['metrics'].nil?
end

.load_user_metrics_configs(user_metrics) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/code_stats/metrics/reporter/config_loader.rb', line 48

def load_user_metrics_configs(user_metrics)
  @default_data[:metrics_configs].each do |metric_default_config|
    user_metric_data = user_metrics[metric_default_config.data['metric']]
    next unless metric_enabled?(user_metric_data)
    @user_data[:metrics_configs] << MetricConfig.new(
      metric_default_config.data.merge(user_metric_data)
    )
  end
end

.load_yml_file(path) ⇒ Object



34
35
36
37
38
# File 'lib/code_stats/metrics/reporter/config_loader.rb', line 34

def load_yml_file(path)
  return unless File.exist?(path)
  yaml_code = IO.read(path, encoding: 'UTF-8')
  YAML.load(ERB.new(yaml_code).result)
end

.metric_enabled?(user_metric_data) ⇒ Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/code_stats/metrics/reporter/config_loader.rb', line 58

def metric_enabled?(user_metric_data)
  !user_metric_data.nil? && user_metric_data['enabled']
end