class DuoSplitter::BatchProcessor

Public Class Methods

new(message:, show_progress: true) click to toggle source
# File lib/duo_splitter/batch_processor.rb, line 7
def initialize(message:, show_progress: true)
  @message = message
  @show_progress = show_progress
end

Public Instance Methods

run(commands) click to toggle source
# File lib/duo_splitter/batch_processor.rb, line 12
def run(commands)
  commands.each.with_index(1) do |command, index|
    print_progress "#{@message} #{index}/#{commands.size}\r"

    shell_output = IO.popen(command, err: %i[child out], &:read)

    status = $CHILD_STATUS.exitstatus

    unless status.zero?
      print_progress "\n"
      print_progress "#{shell_output}\n"
      raise Error, "process exit with #{status}"
    end
  end

  print_progress "\n"
end

Private Instance Methods

print_progress(str) click to toggle source