Class: Overcommit::Hook::PreCommit::EsLint

Inherits:
Base
  • Object
show all
Defined in:
lib/overcommit/hook/pre_commit/es_lint.rb

Overview

Runs eslint against any modified JavaScript files.

Protip: if you have an npm script set up to run eslint, you can configure this hook to run eslint via your npm script by using the command option in your .overcommit.yml file. This can be useful if you have some eslint configuration built into your npm script that you don’t want to repeat somewhere else. Example:

EsLint:
  required_executable: 'npm'
  enabled: true
  command: ['npm', 'run', 'lint', '--', '-f', 'compact']

Note: This hook supports only compact format.

See Also:

Instance Attribute Summary

Attributes inherited from Base

#config

Instance Method Summary collapse

Methods inherited from Base

#applicable_files, #command, #description, #enabled?, #excluded?, #execute, #execute_in_background, #flags, #in_path?, #included_files, #initialize, #name, #parallelize?, #processors, #quiet?, #required?, #required_executable, #required_libraries, #run?, #run_and_transform, #skip?

Constructor Details

This class inherits a constructor from Overcommit::Hook::Base

Instance Method Details

#runObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/overcommit/hook/pre_commit/es_lint.rb', line 21

def run
  result = execute(command, args: applicable_files)
  output = result.stdout.chomp
  messages = output.split("\n").grep(/Warning|Error/)

  return [:fail, result.stderr] if messages.empty? && !result.success?
  return :pass if result.success? && output.empty?

  # example message:
  #   path/to/file.js: line 1, col 0, Error - Error message (ruleName)
  extract_messages(
    messages,
    /^(?<file>(?:\w:)?[^:]+):[^\d]+(?<line>\d+).*?(?<type>Error|Warning)/,
    lambda { |type| type.downcase.to_sym }
  )
end