Class: MonkeyLens::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/monkey_lens/config.rb,
sig/monkey_lens.rbs

Constant Summary collapse

LEVELS =
%w[low medium high critical].freeze
FORMATS =
%w[text json sarif].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(targets:, ignore_methods: [], fail_on: "high", format: "text", baseline: ".monkeylens.json", requires: []) ⇒ Config

Returns a new instance of Config.



12
13
14
15
16
17
18
19
20
# File 'lib/monkey_lens/config.rb', line 12

def initialize(targets:, ignore_methods: [], fail_on: "high", format: "text", baseline: ".monkeylens.json", requires: [])
  @targets = Array(targets).map(&:to_s).uniq
  @ignore_methods = Array(ignore_methods).map(&:to_s).uniq
  @fail_on = fail_on.to_s
  @format = format.to_s
  @baseline = baseline.to_s
  @requires = Array(requires).map(&:to_s)
  validate!
end

Instance Attribute Details

#baselineString (readonly)

Returns the value of attribute baseline.

Returns:

  • (String)


10
11
12
# File 'lib/monkey_lens/config.rb', line 10

def baseline
  @baseline
end

#fail_onString (readonly)

Returns the value of attribute fail_on.

Returns:

  • (String)


10
11
12
# File 'lib/monkey_lens/config.rb', line 10

def fail_on
  @fail_on
end

#formatString (readonly)

Returns the value of attribute format.

Returns:

  • (String)


10
11
12
# File 'lib/monkey_lens/config.rb', line 10

def format
  @format
end

#ignore_methodsArray[String] (readonly)

Returns the value of attribute ignore_methods.

Returns:

  • (Array[String])


10
11
12
# File 'lib/monkey_lens/config.rb', line 10

def ignore_methods
  @ignore_methods
end

#requiresArray[String] (readonly)

Returns the value of attribute requires.

Returns:

  • (Array[String])


10
11
12
# File 'lib/monkey_lens/config.rb', line 10

def requires
  @requires
end

#targetsArray[String] (readonly)

Returns the value of attribute targets.

Returns:

  • (Array[String])


10
11
12
# File 'lib/monkey_lens/config.rb', line 10

def targets
  @targets
end

Class Method Details

.load(path = ".monkeylens.yml") ⇒ Config

Parameters:

  • path (String) (defaults to: ".monkeylens.yml")

Returns:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/monkey_lens/config.rb', line 22

def self.load(path = ".monkeylens.yml")
  data = File.exist?(path) ? YAML.safe_load_file(path, permitted_classes: [], aliases: false) : {}
  data ||= {}
  new(
    targets: data.fetch("targets", []),
    ignore_methods: data.fetch("ignore_methods", []),
    fail_on: data.fetch("fail_on", "high"),
    format: data.fetch("format", "text"),
    baseline: data.fetch("baseline", ".monkeylens.json"),
    requires: data.fetch("requires", [])
  )
rescue Psych::Exception => error
  raise ConfigurationError, "invalid YAML in #{path}: #{error.message}"
end