Class: Overcommit::Hook::PreCommit::OxFmt

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

Overview

Runs oxfmt against any modified files.

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

oxfmt:
required_executable: 'npm'
enabled: true
command: ['npm', 'run', 'fmt', '--', '--check']

Note: This hook only supports check mode.

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
# File 'lib/overcommit/hook/pre_commit/ox_fmt.rb', line 21

def run
  oxfmt_regex = /^(?<file>.+) \(\d+ms\)/
  result = execute(command, args: applicable_files)
  output = result.stdout.chomp
  messages = output.split("\n").grep(oxfmt_regex)

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

  # example message:
  #   test.js (5ms)
  extract_messages(messages, oxfmt_regex)
end