class Dmatrix::Runner

Attributes

logger[R]
options[R]
run_command[R]

Public Class Methods

new(options:, run_command:, logger: Logger.new) click to toggle source
# File lib/dmatrix/runner.rb, line 11
def initialize(options:, run_command:, logger: Logger.new)
  @options = options
  @run_command = run_command
  @logger = logger
end

Public Instance Methods

call() click to toggle source
# File lib/dmatrix/runner.rb, line 17
def call
  reset_log_dir

  results = Parallel.map(combinations, in_threads: 4) do |combination|
    Executor.new(
      combination: combination,
      run_command: run_command,
      log_dir: log_dir
    ).build_run.tap do |result|
      logger.log_result(result)
    end
  end

  if results.any?(&:failure?)
    exit(1)
  end
end

Private Instance Methods

combinations() click to toggle source
# File lib/dmatrix/runner.rb, line 39
def combinations
  Matrix.new(input_combinations).combinations
end
input_combinations() click to toggle source
# File lib/dmatrix/runner.rb, line 43
def input_combinations
  YAML.load_file(matrix_path).fetch("matrix")
end
log_dir() click to toggle source
# File lib/dmatrix/runner.rb, line 56
def log_dir
  options.fetch(:log_dir)
end
log_files() click to toggle source
# File lib/dmatrix/runner.rb, line 60
def log_files
  Dir.glob(File.join(log_dir, "*.log"))
end
matrix_path() click to toggle source
# File lib/dmatrix/runner.rb, line 47
def matrix_path
  options.fetch(:matrix)
end
reset_log_dir() click to toggle source
# File lib/dmatrix/runner.rb, line 51
def reset_log_dir
  FileUtils.mkdir_p(log_dir)
  FileUtils.rm_r(log_files)
end