10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/rail_verdict/repair/command.rb', line 10
def self.execute(repository_root:, config_path:, finding_ref:, format: "console", output_path: nil, changed: false, base: nil, baseline_override: nil, waiver_override: nil, stdout: $stdout, stderr: $stderr)
outcome, interrupted = run_check(repository_root: repository_root, config_path: config_path, changed: changed, base: base, baseline_override: baseline_override, waiver_override: waiver_override)
return [130, nil] if interrupted || outcome.result.completion_status == "interrupted"
begin
packet = ContextAssembler.build(outcome: outcome, finding_ref: finding_ref, repository_root: repository_root)
rescue ContextAssembler::StaleFindingError => e
stderr.puts "railverdict repair: #{e.message}"
return [2, nil]
rescue ArgumentError => e
stderr.puts "railverdict repair: #{e.message}"
return [2, nil]
end
hash = packet.to_h
if output_path
write_atomic(output_path, hash, stderr)
return [2, nil] unless File.file?(output_path)
end
if format == "json"
stdout.write(JSON.generate(hash) + "\n")
else
stdout.write(render_console(hash))
end
[0, packet]
end
|