28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/kamal_backup/command.rb', line 28
def self.capture(spec, input: nil, redactor:)
stdout, stderr, status = Open3.capture3(spec.env, *spec.argv, stdin_data: input)
result = CommandResult.new(stdout: stdout, stderr: stderr, status: status.exitstatus)
return result if status.success?
raise CommandError.new(
"command failed (#{status.exitstatus}): #{spec.display(redactor)}\n#{redactor.redact_string(stderr)}",
command: spec,
status: status.exitstatus,
stdout: redactor.redact_string(stdout),
stderr: redactor.redact_string(stderr)
)
rescue Errno::ENOENT => e
raise CommandError.new(
"command not found: #{spec.argv.first}",
command: spec,
status: 127,
stderr: e.message
)
end
|