Sha256: b486691dc05ef7b2eaaf46c155a8f80070eed42bbf5f78dfec4eb760dcd48234
Contents?: true
Size: 1.27 KB
Versions: 18
Compression:
Stored size: 1.27 KB
Contents
# frozen_string_literal: true module Overcommit::Hook::PreCommit # 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 http://eslint.org/ class EsLint < Base 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 end end
Version data entries
18 entries across 18 versions & 2 rubygems