Class: Overcommit::Hook::PreCommit::Jscs
- Defined in:
- lib/overcommit/hook/pre_commit/jscs.rb
Overview
Runs ‘jscs` (JavaScript Code Style Checker) against any modified JavaScript files.
Instance Method Summary collapse
Methods inherited from Base
#applicable_files, #description, #enabled?, #execute, #in_path?, #initialize, #name, #quiet?, #required?, #run?, #skip?
Constructor Details
This class inherits a constructor from Overcommit::Hook::Base
Instance Method Details
#run ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/overcommit/hook/pre_commit/jscs.rb', line 5 def run unless in_path?('jscs') return :warn, 'jscs not installed -- run `npm install -g jscs`' end result = execute(%w[jscs --reporter=inline] + applicable_files) return :good if result.success? if /Config.*not found/i =~ result.stderr return :warn, result.stderr.chomp end # Keep lines from the output for files that we actually modified error_lines, warning_lines = result.stdout.split("\n").partition do |output_line| if match = output_line.match(/^([^:]+):[^\d]+(\d+)/) file = match[1] line = match[2] end modified_lines(file).include?(line.to_i) end return :bad, error_lines.join("\n") unless error_lines.empty? [:warn, "Modified files have lints (on lines you didn't modify)\n" << warning_lines.join("\n")] end |