class Shred::Commands::ShellCommand

Attributes

command_lines[R]
error_msg[R]
out[R]
output[R]
success_msg[R]

Public Class Methods

new(command_lines: nil, success_msg: nil, error_msg: nil, output: nil) click to toggle source
# File lib/shred/commands/base.rb, line 61
def initialize(command_lines: nil, success_msg: nil, error_msg: nil, output: nil)
  @command_lines = Array(command_lines).compact
  raise ArgumentError, "At least one command line is required" if command_lines.empty?
  @success_msg = success_msg
  @error_msg = error_msg
  @output = output
  @out = if output && output.respond_to?(:write)
    output
  elsif output
    File.open(output, 'w')
  end
end

Public Instance Methods

run() { |command_line| ... } click to toggle source
# File lib/shred/commands/base.rb, line 74
def run(&block)
  exit_status = nil
  command_lines.each_with_index do |command_line, i|
    command_line = CommandLine.new(command_line: command_line, out: out)
    exit_status = if block_given?
      yield(command_line)
    else
      command_line.run
    end
    break unless exit_status.success?
  end
  exit_status
ensure
  out.close if out
end