maximus 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8843e2de02ffdfdbe667056bbb99a3a346a6c2aa
4
- data.tar.gz: 4d60b2e41051e130c5d6749c584430f6d3d49681
3
+ metadata.gz: b23428dccc821b0c760a0e9e700dae8a98590824
4
+ data.tar.gz: 584a217684704ba5e28be0362805de0dff016d4a
5
5
  SHA512:
6
- metadata.gz: 6bfa472047e078d6d46220e88a5e0fe2f350ddc321c39c4967d89c5e0015b1da40af853448501966bc197abe1238e3d0e2791ecaface6bc08c8755b24049c3bc
7
- data.tar.gz: 4d41a262ca94d0dc8444b8ce2a4d43978ae4945010ecc2ac670519dcddb375a0af61f4baa903042d77bdf54c3bb53271cb24d15efd46528791ab72ba6b699c73
6
+ metadata.gz: 8d6782b673a666075f0e8fef4dbbe885a25f5eba717522a6adf3eeb0e89089abaac67a1bea31c6b07a25e6bb8fa188f02ca1b23ad97f301be7e5b3242bdbeaed
7
+ data.tar.gz: 7b8fe7dfbf4401ba3c12ce4249d790e1b9c6e59c18688c1c75fda55cc998ad3ad1964f6e2ea6e4aa9bb2c9f3a1c431cb9f4f05ead59c5a50884c5258cbf66f8e
@@ -1,6 +1,8 @@
1
1
  sudo: false
2
2
  cache: bundler
3
3
  language: ruby
4
+ git:
5
+ depth: 800
4
6
  rvm:
5
7
  - 2.0.0
6
8
  - 2.1
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Tim Shedor
1
+ Copyright (c) 2015 Tim Shedor
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -77,18 +77,18 @@ lints: true # all lints including brakeman will run
77
77
 
78
78
  Flag | Accepts | Description
79
79
  --------------------|----------------------------------|--------------------
80
- `-fp`/`--filepaths` | String/Array | Space-separated path(s) to files
81
- `-u`/`--urls` | String/Array | Statistics only - Space-separated path(s) to relative URLs
82
- `-d`/`--domain` | String | Statistics only - Web address (prepended to paths)
83
- `-po`/`--port` | String/Numeric | Statistics only - Port to use if required (appended to domain)
80
+ `-g`/`--sha` | String | Run maximus based on a git commit. See [below](#git-examples)
84
81
  `-f`/`--frontend` | Boolean/Blank | Run all front-end lints
85
82
  `-b`/`--backend` | Boolean/Blank | Run all back-end lints
86
83
  `-s`/`--statistics` | Boolean/Blank | Run all statistics
87
84
  `-a`/`--all` | Boolean/Blank | Run everything
88
85
  `-i`/`--include` | String/Array | Include specific lints or statistics
89
86
  `-i`/`--exclude` | String/Array | Exclude specific lints or statistics
90
- `-git`/`--sha` | String | Run maximus based on a git commit. See [below](#git-examples)
91
87
  `-c`/`--config` | String | Path to config file
88
+ `-fp`/`--filepaths` | String/Array | Space-separated path(s) to files
89
+ `-u`/`--urls` | String/Array | Statistics only - Space-separated path(s) to relative URLs
90
+ `-d`/`--domain` | String | Statistics only - Web address (prepended to paths)
91
+ `-po`/`--port` | String/Numeric | Statistics only - Port to use if required (appended to domain)
92
92
 
93
93
 
94
94
  * Lint tasks can accept glob notation, i.e. `**/*.scss`
@@ -135,8 +135,26 @@ When adding new lints, the JSON output should obey the following format:
135
135
  } ]
136
136
  ```
137
137
 
138
+ ## Notes
139
+
140
+ If calling Maximus::Wraith from a script, please see the note in lib/statistics/wraith.rb#result
141
+
138
142
  ## Changelog
139
143
 
144
+ ### 0.1.5 (February 1, 2015)
145
+
146
+ Bugfixes:
147
+
148
+ * Wraith outputs percentages properly
149
+ * Diff data for initial commits
150
+ * More intuitive config path discovery
151
+ * Flip GitControl#diff around for old to new comparison
152
+ * More stability/defensive programming in Config, Wraith, and GitControl
153
+
154
+ Features:
155
+
156
+ * Wraith includes images in output
157
+
140
158
  ### 0.1.4 (January 3, 2015)
141
159
 
142
160
  Bugfixes:
@@ -14,14 +14,14 @@ class Maximus::CLI < Thor
14
14
  class_option :filepath, aliases: ['-fp'], type: :array, default: [], desc: "Space-separated path(s) to files"
15
15
  class_option :urls, aliases: ['-u'], type: :array, default: ['/'], desc: "Statistics only - Space-separated path(s) to relative URL paths"
16
16
  class_option :domain, aliases: ['-d'], type: :string, default: 'http://localhost', desc: "Statistics only - Web address (prepended to paths)"
17
- class_option :port, aliases: ['-po'], type: :numeric, default: nil, desc: 'Statistics only - Port to use if required (appended to domain)'
17
+ class_option :port, aliases: ['-po'], type: :numeric, default: 3000, desc: 'Statistics only - Port to use if required (appended to domain)'
18
18
 
19
19
  class_option :include, aliases: ['-i'], type: :array, default: [], desc: "Include only specific lints or statistics"
20
20
  class_option :exclude, aliases: ['-e'], type: :array, default: [], desc: "Exlude specific lints or statistics"
21
21
 
22
- class_option :config, aliases: ['-c'], type: :string, default: 'maximus.yml', desc: 'Path to config file'
22
+ class_option :config, aliases: ['-c'], type: :string, default: nil, desc: 'Path to config file'
23
23
 
24
- class_option :git, aliases: ['-g', '--sha'], type: :string, default: 'working', banner: "working, last, master, or sha", desc: "Lint by commit or working copy"
24
+ class_option :git, aliases: ['-g', '--git', '--sha'], type: :string, default: 'working', banner: "working, last, master, or sha", desc: "Lint by commit or working copy"
25
25
 
26
26
  def initialize(*args)
27
27
  super
@@ -31,16 +31,19 @@ class Maximus::CLI < Thor
31
31
  desc "frontend", "Execute all front-end tasks"
32
32
  def frontend
33
33
  ['scsslint', 'jshint'].each { |e| check_exclude(e) }
34
+ @config.destroy_temp
34
35
  end
35
36
 
36
37
  desc "backend", "Lint with all backend lints"
37
38
  def backend
38
39
  ['rubocop', 'railsbp', 'brakeman'].each { |e| check_exclude(e) }
40
+ @config.destroy_temp
39
41
  end
40
42
 
41
43
  desc "statistics", "Run all statistics"
42
44
  def statistics
43
45
  ['stylestats', 'phantomas', 'wraith'].each { |e| check_exclude(e) }
46
+ @config.destroy_temp
44
47
  end
45
48
 
46
49
  # Alias ruby to backend
@@ -61,7 +64,8 @@ class Maximus::CLI < Thor
61
64
  return options[:include].each { |i| send(i) } unless options[:include].blank?
62
65
  # If all flag is not enabled, lint working copy as it's supposed to be
63
66
  @config.settings[:commit] = options[:git]
64
- return Maximus::GitControl.new({config: @config}).lints_and_stats(true)
67
+ Maximus::GitControl.new({config: @config}).lints_and_stats(true)
68
+ @config.destroy_temp
65
69
  end
66
70
 
67
71
  # @todo something better than just installing in the global npm file
@@ -1,3 +1,6 @@
1
+ require 'active_support'
2
+ require 'active_support/core_ext/hash/keys'
3
+
1
4
  module Maximus
2
5
 
3
6
  # Global options and configuration
@@ -27,127 +30,99 @@ module Maximus
27
30
  # @option opts [Hash] :paths ({home: '/'}) labeled relative path to URLs. Statistics only
28
31
  # @option opts [String] :commit accepts sha, "working", "last", or "master".
29
32
  # @option opts [String] :config_file ('maximus.yml') path to config file
30
- # @return [#load_config_file #group_families #evaluate_yaml] this method is used to set up instance variables
33
+ # @option opts [Boolean] :compile_assets (true) compile and destroy assets automagically
34
+ # @return [#load_config_file #group_families #evaluate_settings] this method is used to set up instance variables
31
35
  def initialize(opts = {})
32
- opts[:is_dev] ||= false
36
+
37
+ default_options = {
38
+ root_dir: root_dir,
39
+ domain: 'http://localhost',
40
+ port: is_rails? ? 3000 : '',
41
+ paths: { 'home' => '/' },
42
+ is_dev: false,
43
+ phantomas: false,
44
+ stylestats: false,
45
+ wraith: false
46
+ }
47
+
48
+ yaml = default_options.merge load_config_file(opts[:config_file])
49
+ @settings = yaml.merge opts
33
50
 
34
51
  # Only set log file if it's set to true.
35
52
  # Otherwise, allow it to be nil or a path
36
- opts[:log] = 'log/maximus.log' if opts[:log].is_a?(TrueClass)
53
+ @settings[:log] = false if @settings[:log].nil?
54
+ @settings[:log] ||= 'log/maximus.log' if @settings[:log].is_a?(TrueClass)
37
55
 
38
- opts[:git_log] = false if opts[:git_log].nil?
39
- opts[:git_log] = 'log/maximus_git.log' if opts[:git_log].is_a?(TrueClass)
56
+ @settings[:git_log] = false if @settings[:git_log].nil?
57
+ @settings[:git_log] ||= 'log/maximus_git.log' if @settings[:git_log].is_a?(TrueClass)
40
58
 
41
- # @see Helper#root_dir
42
- opts[:root_dir] ||= root_dir
43
- opts[:domain] ||= 'http://localhost'
44
- opts[:port] ||= is_rails? ? 3000 : ''
45
- opts[:paths] ||= { 'home' => '/' }
59
+ @settings[:compile_assets] = true if @settings[:compile_assets].nil?
46
60
 
47
- opts[:paths] = parse_cli_config(opts[:paths]) if opts[:paths].is_a?(Array)
61
+ @settings[:paths] = split_paths(@settings[:paths]) if @settings[:paths].is_a?(Array)
48
62
 
49
- # What we're really interested in
50
- @settings = opts
63
+ group_families
51
64
 
52
65
  # Instance variables for Config class only
53
66
  @temp_files = {}
54
-
55
- load_config_file(opts[:config_file])
56
-
57
- group_families
58
-
59
67
  # Override options with any defined in a discovered config file
60
- evaluate_yaml
68
+ evaluate_settings
61
69
  end
62
70
 
63
71
  # Set global options or generate appropriate config files for lints or statistics
64
- #
65
- # @param yaml_data [Hash] (@yaml) loaded data from the discovered maximus config file
72
+ # @param settings_data [Hash] (@settings) loaded data from the discovered maximus config file
66
73
  # @return [Hash] paths to temp config files and static options
67
74
  # These should be deleted with destroy_temp after read and loaded
68
- def evaluate_yaml(yaml_data = @yaml)
69
- yaml_data.each do |key, value|
70
- unless value.is_a?(FalseClass)
71
- value = {} if value.is_a?(TrueClass)
72
-
73
- case key
74
-
75
- when 'jshint', 'JSHint', 'JShint'
76
-
77
- # @todo DRY this up, but can't call it at the start because of the
78
- # global config variables (last when statement in this switch)
79
- value = load_config(value)
80
-
81
- if yaml_data[key].is_a?(Hash) && yaml_data[key].has_key?['ignore']
82
- jshintignore_file = []
83
- yaml_data[key]['ignore'].each { |i| jshintignore_file << "#{i}\n" }
84
- @settings[:jshintignore] = temp_it('jshintignore.json', jshintignore_file)
85
- end
86
- @settings[:jshint] = temp_it('jshint.json', value.to_json)
87
-
88
- when 'scsslint', 'scss-lint', 'SCSSlint'
89
- value = load_config(value)
90
-
91
- @settings[:scsslint] = temp_it('scsslint.yml', value.to_yaml)
92
-
93
- when 'rubocop', 'Rubocop', 'RuboCop'
94
- value = load_config(value)
95
-
96
- @settings[:rubocop] = temp_it('rubocop.yml', value.to_yaml)
97
-
98
- when 'brakeman'
99
- @settings[:brakeman] = yaml_data[key]
100
-
101
- when 'rails_best_practice', 'railsbp'
102
- @settings[:railsbp] = yaml_data[key]
103
-
104
- when 'stylestats', 'Stylestats'
105
- value = load_config(value)
106
- @settings[:stylestats] = temp_it('stylestats.json', value.to_json)
107
-
108
- when 'phantomas', 'Phantomas'
109
- value = load_config(value)
110
- @settings[:phantomas] = temp_it('phantomas.json', value.to_json)
111
-
112
- when 'wraith', 'Wraith'
113
- value = load_config(value)
114
-
115
- @settings[:wraith] = {}
116
- if value.include?('browser')
117
- value['browser'].each do |browser, browser_value|
118
- unless browser_value.is_a?(FalseClass)
119
- new_data = {}
120
- new_data['browser'] = []
121
- new_data['browser'] << { browser.to_s => browser.to_s }
122
-
123
- # Regardless of what's in the config, override with maximus,
124
- # predictable namespacing
125
- new_data['directory'] = "maximus_wraith_#{browser}"
126
- new_data['history_dir'] = "maximus_wraith_history_#{browser}"
127
-
128
- # @todo a snap file cannot be set in the config
129
- snap_file = case browser
130
- when 'casperjs' then 'casper'
131
- when 'nojs' then 'nojs'
132
- else 'snap'
133
- end
134
- new_data['snap_file'] = File.join(File.dirname(__FILE__), "config/wraith/#{snap_file}.js")
135
-
136
- @settings[:wraith][browser.to_sym] = wraith_setup(new_data, "wraith_#{browser}")
137
- end
138
- end
139
- else
140
- value['browser'] = { 'phantomjs' => 'phantomjs' }
141
- value['directory'] = 'maximus_wraith_phantomjs'
142
- value['history_dir'] = 'maximus_wraith_history_phantomjs'
143
- value['snap_file'] = File.join(File.dirname(__FILE__), "config/wraith/snap.js")
144
- @settings[:wraith][:phantomjs] = wraith_setup(value)
145
- end
146
-
147
- # Configuration important to all of maximus
148
- when 'is_dev', 'log', 'root_dir', 'domain', 'port', 'paths', 'commit'
149
- @settings[key.to_sym] = yaml_data[key]
150
- end
75
+ def evaluate_settings(settings_data = @settings)
76
+ settings_data.each do |key, value|
77
+ next if value.is_a?(FalseClass)
78
+ value = {} if value.is_a?(TrueClass)
79
+
80
+ case key
81
+
82
+ when :jshint, :JSHint, :JShint
83
+
84
+ # @todo DRY this load_config up, but can't call it at the start because of the
85
+ # global config variables (last when statement in this switch)
86
+ value = load_config(value)
87
+
88
+ if settings_data[key].is_a?(Hash) && settings_data[key].has_key?('jshintignore')
89
+ jshintignore_file = []
90
+ settings_data[key]['jshintignore'].each { |i| jshintignore_file << "#{i}\n" }
91
+ @settings[:jshintignore] = temp_it('jshintignore.json', jshintignore_file)
92
+ end
93
+ @settings[:jshint] = temp_it('jshint.json', value.to_json)
94
+
95
+ when :scsslint, :SCSSlint
96
+ value = load_config(value)
97
+
98
+ @settings[:scsslint] = temp_it('scsslint.yml', value.to_yaml)
99
+
100
+ when :rubocop, :Rubocop, :RuboCop
101
+ value = load_config(value)
102
+
103
+ @settings[:rubocop] = temp_it('rubocop.yml', value.to_yaml)
104
+
105
+ when :brakeman
106
+ @settings[:brakeman] = settings_data[key]
107
+
108
+ when :rails_best_practice, :railsbp
109
+ @settings[:railsbp] = settings_data[key]
110
+
111
+ when :stylestats, :Stylestats
112
+ value = load_config(value)
113
+ @settings[:stylestats] = temp_it('stylestats.json', value.to_json)
114
+
115
+ when :phantomas, :Phantomas
116
+ value = load_config(value)
117
+ @settings[:phantomas] = temp_it('phantomas.json', value.to_json)
118
+
119
+ when :wraith, :Wraith
120
+ value = load_config(value)
121
+ evaluate_for_wraith(value)
122
+
123
+ # Configuration important to all of maximus
124
+ when :is_dev, :log, :root_dir, :domain, :port, :paths, :commit
125
+ @settings[key] = settings_data[key]
151
126
  end
152
127
  end
153
128
 
@@ -175,17 +150,23 @@ module Maximus
175
150
 
176
151
  # Remove all or one created temporary config file
177
152
  # @see temp_it
178
- # @param filename [String] file to destroy
179
- def destroy_temp(filename)
180
- return if @temp_files[filename.to_sym].blank?
181
- @temp_files[filename.to_sym].unlink
182
- @temp_files.delete(filename.to_sym)
153
+ # @param filename [String] (nil) file to destroy
154
+ # If nil, destroy all temp files
155
+ def destroy_temp(filename = nil)
156
+ if filename.nil?
157
+ @temp_files.each { |filename, file| file.unlink }
158
+ @temp_files = {}
159
+ else
160
+ return if @temp_files[filename.to_sym].blank?
161
+ @temp_files[filename.to_sym].unlink
162
+ @temp_files.delete(filename.to_sym)
163
+ end
183
164
  end
184
165
 
185
166
  # Combine domain with port if necessary
186
167
  # @return [String] complete domain/host address
187
168
  def domain
188
- (!@settings[:port].blank? || @settings[:domain].include?(':')) ? "#{@settings[:domain]}:#{@settings[:port]}" : @settings[:domain]
169
+ (!@settings[:port].blank?) ? "#{@settings[:domain]}:#{@settings[:port]}" : @settings[:domain]
189
170
  end
190
171
 
191
172
 
@@ -193,44 +174,41 @@ module Maximus
193
174
 
194
175
  # Look for a maximus config file
195
176
  #
196
- # Checks ./maximus.yml, ./maximus.yaml, ./config/maximus.yaml in order.
177
+ # Checks ./maximus.yml, ./.maximus.yml, ./config/maximus.yml in order.
197
178
  # If there hasn't been a file discovered yet, checks ./config/maximus.yml
198
179
  # and if there still isn't a file, load the default one included with the
199
180
  # maximus gem.
200
181
  #
201
182
  # @since 0.1.4
202
183
  # @param file_path [String]
203
- # @return @yaml [Hash]
184
+ # @return @settings [Hash]
204
185
  def load_config_file(file_path)
205
186
 
206
187
  conf_location = if !file_path.nil? && File.exist?(file_path)
207
188
  file_path
208
189
  else
209
- config_exists('maximus.yml') || config_exists('maximus.yaml') || config_exists('config/maximus.yaml') || check_default_config_path('maximus.yml')
190
+ config_exists('.maximus.yml') || config_exists('maximus.yml') || check_default_config_path('config/maximus.yml')
210
191
  end
211
192
 
212
- @yaml = YAML.load_file(conf_location)
193
+ yaml = YAML.load_file(conf_location)
213
194
 
214
- # Match defaults
215
- @yaml['domain'] ||= @settings[:domain]
216
- @yaml['paths'] ||= @settings[:paths]
217
- @yaml['port'] ||= @settings[:port]
195
+ yaml.symbolize_keys
218
196
 
219
197
  end
220
198
 
221
199
  # Allow shorthand to be declared for groups Maximus executions
222
200
  #
223
201
  # @example disable statistics
224
- # @yaml['statistics'] = false
202
+ # @settings[:statistics] = false
225
203
  # set_families('statistics', ['phantomas', 'stylestats', 'wraith'])
226
204
  #
227
205
  # Sets as Boolean based on whether or not the queried label is `true`
228
- # @param head_of_house [String] @yaml key and group label
229
- # @param family [Array] group of other @yaml keys to be disabled
230
- # @return [void] modified @yaml
206
+ # @param head_of_house [String] @settings key and group label
207
+ # @param family [Array] group of other @settings keys to be disabled
208
+ # @return [void] modified @settings
231
209
  def set_families(head_of_house, family)
232
- if @yaml.has_key?(head_of_house)
233
- family.each { |f| @yaml[f] = @yaml[head_of_house].is_a?(TrueClass) }
210
+ if @settings.has_key?(head_of_house)
211
+ family.each { |f| @settings[f] ||= @settings[head_of_house].is_a?(TrueClass) }
234
212
  end
235
213
  end
236
214
 
@@ -259,9 +237,11 @@ module Maximus
259
237
  # @return [String] absolute path to new config file
260
238
  def temp_it(filename, data)
261
239
  ext = filename.split('.')
262
- file = Tempfile.new([filename, ".#{ext[1]}"])
263
- file.write(data)
264
- file.close
240
+ file = Tempfile.new([filename, ".#{ext[1]}"]).tap do |f|
241
+ f.rewind
242
+ f.write(data)
243
+ f.close
244
+ end
265
245
  @temp_files[ext[0].to_sym] = file
266
246
  file.path
267
247
  end
@@ -282,7 +262,7 @@ module Maximus
282
262
  # @since 0.1.4
283
263
  # @param paths [Array]
284
264
  # @return [Hash]
285
- def parse_cli_config(paths)
265
+ def split_paths(paths)
286
266
  new_paths = {}
287
267
  paths.each do |p|
288
268
  if p.split('/').length > 1
@@ -298,44 +278,76 @@ module Maximus
298
278
  # @since 0.1.4
299
279
  # @todo the command line options are overriden here and it should be the other way around
300
280
  def group_families
301
- set_families('lints', ['jshint', 'scsslint', 'rubocop', 'brakeman', 'railsbp'])
302
- set_families('frontend', ['jshint', 'scsslint', 'phantomas', 'stylestats', 'wraith'])
303
- set_families('backend', ['rubocop', 'brakeman', 'railsbp'])
304
- set_families('ruby', ['rubocop', 'brakeman', 'railsbp'])
305
- set_families('statistics', ['phantomas', 'stylestats', 'wraith'])
306
- set_families('all', ['lints', 'statistics'])
281
+ set_families(:lints, [:jshint, :scsslint, :rubocop, :brakeman, :railsbp])
282
+ set_families(:frontend, [:jshint, :scsslint, :phantomas, :stylestats, :wraith])
283
+ set_families(:backend, [:rubocop, :brakeman, :railsbp])
284
+ set_families(:ruby, [:rubocop, :brakeman, :railsbp])
285
+ set_families(:statistics, [:phantomas, :stylestats, :wraith])
286
+ set_families(:all, [:lints, :statistics])
307
287
  end
308
288
 
309
289
  # Wraith is a complicated gem with significant configuration
310
- #
311
- # @see yaml_evaluate
312
- # @see temp_it
313
- #
290
+ # @see yaml_evaluate, temp_it
314
291
  # @param value [Hash] modified data from a wraith config or injected data
315
292
  # @param name [String] ('wraith') config file name to write and eventually load
316
293
  # @return [String] temp file path
317
294
  def wraith_setup(value, name = 'phantomjs')
318
295
 
319
- if @yaml.include?('urls')
320
- value['domains'] = yaml_data['urls']
296
+ if @settings.has_key?(:urls)
297
+ value['domains'] = @settings[:urls]
321
298
  else
322
299
  value['domains'] = {}
323
300
  # @see #domain
324
301
  value['domains']['main'] = domain
325
302
  end
326
303
 
304
+ # Set wraith defaults unless they're already defined
327
305
  # Wraith requires this screen_width config to be present
328
- value['screen_widths'] ||= [767, 1024, 1280]
329
-
330
- value['paths'] = @yaml['paths']
306
+ value['screen_widths'] ||= [1280, 1024, 767]
307
+ value['fuzz'] ||= '20%'
331
308
  value['threshold'] ||= 0
332
309
 
333
- # Wraith requires config files have .yaml extensions
334
- # https://github.com/BBC-News/wraith/blob/2aff771eba01b76e61600cccb2113869bfe16479/lib/wraith/wraith.rb
335
- file = Tempfile.new([name, '.yaml'])
336
- file.write(value.to_yaml)
337
- file.close
338
- file.path
310
+ value['paths'] = @settings[:paths]
311
+ temp_it("#{name}.yaml", value.to_yaml)
312
+ end
313
+
314
+ # Apply wraith defaults/merge existing config
315
+ # @since 0.1.5
316
+ # @see yaml_evaluate
317
+ # @param value [Hash]
318
+ def evaluate_for_wraith(value)
319
+ @settings[:wraith] = {}
320
+
321
+ if value.include?('browser')
322
+ value['browser'].each do |browser, browser_value|
323
+ next if browser_value.is_a?(FalseClass)
324
+
325
+ # @todo a snap file cannot be set in the config
326
+ snap_file = case browser
327
+ when 'casperjs' then 'casper'
328
+ when 'nojs' then 'nojs'
329
+ else 'snap'
330
+ end
331
+
332
+ new_data = {
333
+ 'browser' => [{ browser.to_s => browser.to_s }],
334
+ 'directory' => "maximus_wraith_#{browser}",
335
+ 'history_dir' => "maximus_wraith_history_#{browser}",
336
+ 'snap_file' => File.join(File.dirname(__FILE__), "config/wraith/#{snap_file}.js")
337
+ }
338
+
339
+ @settings[:wraith][browser.to_sym] = wraith_setup(new_data, "maximus_wraith_#{browser}")
340
+ end
341
+ else
342
+ append_value = {
343
+ 'browser' => { 'phantomjs' => 'phantomjs' },
344
+ 'directory' => 'maximus_wraith_phantomjs',
345
+ 'history_dir' => 'maximus_wraith_history_phantomjs',
346
+ 'snap_file' => File.join(File.dirname(__FILE__), "config/wraith/snap.js")
347
+ }
348
+ @settings[:wraith][:phantomjs] = wraith_setup value.merge(append_value)
349
+ end
350
+
339
351
  end
340
352
 
341
353
  end