Class: TurbotRunner::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/turbot_runner/runner.rb

Constant Summary collapse

RC_OK =
0
RC_SCRAPER_FAILED =
1
RC_TRANSFORMER_FAILED =
2

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(directory, options = {}) ⇒ Runner

Returns a new instance of Runner.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/turbot_runner/runner.rb', line 13

def initialize(directory, options={})
  assert_absolute_path(directory)
  @base_directory = directory
  @config = load_config(directory)
  @record_handler = options[:record_handler]
  @log_to_file = options[:log_to_file]
  @timeout = options[:timeout]
  @scraper_provided = options[:scraper_provided]
  if options[:output_directory]
    assert_absolute_path(options[:output_directory])
    @output_directory = options[:output_directory]
  else
    @output_directory = File.join(@base_directory, 'output')
  end
end

Instance Attribute Details

#base_directoryObject (readonly)

Returns the value of attribute base_directory.



11
12
13
# File 'lib/turbot_runner/runner.rb', line 11

def base_directory
  @base_directory
end

Instance Method Details

#process_output(opts = {}) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/turbot_runner/runner.rb', line 71

def process_output(opts={})
  process_script_output(scraper_config, opts)

  transformers.each do |transformer_config|
    process_script_output(transformer_config.merge(:base_directory => @base_directory), opts)
  end
end

#runObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/turbot_runner/runner.rb', line 29

def run
  set_up_output_directory

  if @scraper_provided
    scraper_succeeded = true
  else
    scraper_succeeded = run_script(scraper_config)
  end

  # Run the transformers even if the scraper fails
  transformers_succeeded = true
  transformers.each do |transformer_config|
    config = transformer_config.merge({
      :base_directory => @base_directory,
      :duplicates_allowed => duplicates_allowed,
    })
    transformers_succeeded = run_script(config, input_file=scraper_output_file) && transformers_succeeded
  end

  if !scraper_succeeded
    RC_SCRAPER_FAILED
  elsif !transformers_succeeded
    RC_TRANSFORMER_FAILED
  else
    RC_OK
  end
end

#set_up_output_directoryObject



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/turbot_runner/runner.rb', line 57

def set_up_output_directory
  FileUtils.mkdir_p(@output_directory)

  if !@scraper_provided
    FileUtils.rm_f(output_file('scraper', '.out'))
    FileUtils.rm_f(output_file('scraper', '.err'))
  end

  transformers.each do |transformer_config|
    FileUtils.rm_f(output_file(transformer_config[:file], '.out'))
    FileUtils.rm_f(output_file(transformer_config[:file], '.err'))
  end
end