Class: Kettle::Drift::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/kettle/drift/cli.rb

Instance Method Summary collapse

Instance Method Details

#run(argv = ARGV) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/kettle/drift/cli.rb', line 9

def run(argv = ARGV)
  options = parse(argv)
  return options if options.is_a?(Integer)

  project_root = File.expand_path(options.fetch(:project_root))
  outcome = Kettle::Drift.run(
    project_root: project_root,
    template_dir: options[:template_dir],
    min_chars: options.fetch(:min_chars),
    json_path: options[:json_path],
    lock_path: options[:lock_path],
    mode: options.fetch(:mode),
  )

  if outcome.clean?
    puts "[kettle-drift] ✅  No duplicate drift detected (min_chars=#{options[:min_chars]}, files=#{outcome.files.size}, baseline=#{outcome.baseline_set.size})"
  else
    puts "[kettle-drift] ⚠️  #{outcome.warning_count} drift warning(s) across #{outcome.results.size} unique chunk(s) (files=#{outcome.files.size}, baseline=#{outcome.baseline_set.size})"
    puts "[kettle-drift] 📄  Report: #{Kettle::Drift.display_path(outcome.json_path)}" if outcome.json_path
  end

  outcome.exit_code
end