class Overcommit::Hook::PreCommit::RubySyntax

Runs `ruby -c` against all Ruby files.

Constants

MESSAGE_TYPE_CATEGORIZER

Public Instance Methods

run() click to toggle source
# File lib/overcommit/hook/pre_commit/ruby_syntax.rb, line 11
def run
  result = execute(command, args: applicable_files)

  result_lines = result.stderr.split("\n")

  return :pass if result_lines.length.zero?

  # Example message:
  #   path/to/file.rb:1: syntax error, unexpected '^'
  extract_messages(
    result_lines,
    /^(?<file>[^:]+):(?<line>\d+):\s*(?<type>[^,]+),\s*(?<message>.+)/,
    MESSAGE_TYPE_CATEGORIZER
  )
end