Module: Migflow::Reporters

Defined in:
lib/migflow/reporters.rb,
lib/migflow/reporters/json_reporter.rb,
lib/migflow/reporters/markdown_reporter.rb

Defined Under Namespace

Classes: JsonReporter, MarkdownReporter

Constant Summary collapse

LEVEL_THRESHOLDS =

Maps level names to the minimum score for that level: { “high” => 71, “medium” => 31, “low” => 1 }

Migflow::Services::RiskScorer::LEVELS
.reject { |l| l[:level] == "safe" }
.to_h { |l| [l[:level], l[:min]] }
.freeze

Class Method Summary collapse

Class Method Details

.for(format) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/migflow/reporters.rb', line 15

def self.for(format)
  case format.to_sym
  when :json then JsonReporter.new
  when :markdown then MarkdownReporter.new
  else raise ArgumentError, "Unknown format: #{format}. Use 'json' or 'markdown'."
  end
end

.resolve_threshold(fail_on) ⇒ Object

Resolves FAIL_ON value (level name or numeric string) to a minimum score threshold. Returns nil if FAIL_ON is blank.



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/migflow/reporters.rb', line 25

def self.resolve_threshold(fail_on)
  return nil if fail_on.nil? || fail_on.strip.empty?

  if fail_on.match?(/\A\d+\z/)
    Integer(fail_on)
  else
    LEVEL_THRESHOLDS.fetch(fail_on.downcase) do
      raise ArgumentError,
            "Unknown FAIL_ON level '#{fail_on}'. Use low/medium/high or a numeric score."
    end
  end
end