Class: Danger::DangerWCC::Jshint

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/wcc/jshint.rb

Constant Summary collapse

DEFAULT_OPTIONS =
{
  directory: 'app/assets/javascripts'
}.freeze

Instance Method Summary collapse

Methods included from Utils

#diff_strings, #each_addition_in_diff, #each_file_in_diff, #find_in_diff, #format_links_as_markdown, #issue, #logger, #parsed_diffs, #plugin, #run, #run_and_diff, #with_revision

Constructor Details

#initialize(plugin, options = {}) ⇒ Jshint

Returns a new instance of Jshint.



13
14
15
16
# File 'lib/wcc/jshint.rb', line 13

def initialize(plugin, options = {})
  @plugin = plugin
  @options = DEFAULT_OPTIONS.merge(options)
end

Instance Method Details

#performObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/wcc/jshint.rb', line 18

def perform
  return unless Dir.exist?(@options[:directory])

  run('PREFIX=/tmp npm install -g jshint')
  diff = run_jshint_diff

  # run jshint again to get line numbers
  jshint_lines = run '/tmp/lib/node_modules/jshint/bin/jshint '\
    "#{@options[:directory]}"
  jshint_lines = jshint_lines.lines

  each_addition_in_diff(diff) do |line|
    add_jshint_warning(jshint_lines[line.line_number.right - 1])
  end
end