overcommit 0.27.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/bin/overcommit +0 -1
  3. data/config/default.yml +155 -2
  4. data/lib/overcommit.rb +2 -0
  5. data/lib/overcommit/cli.rb +1 -0
  6. data/lib/overcommit/configuration.rb +1 -1
  7. data/lib/overcommit/git_repo.rb +1 -2
  8. data/lib/overcommit/hook/base.rb +1 -1
  9. data/lib/overcommit/hook/commit_msg/gerrit_change_id.rb +1 -1
  10. data/lib/overcommit/hook/post_checkout/bower_install.rb +11 -0
  11. data/lib/overcommit/hook/post_checkout/bundle_install.rb +11 -0
  12. data/lib/overcommit/hook/post_checkout/npm_install.rb +11 -0
  13. data/lib/overcommit/hook/post_commit/bower_install.rb +11 -0
  14. data/lib/overcommit/hook/post_commit/bundle_install.rb +11 -0
  15. data/lib/overcommit/hook/post_commit/npm_install.rb +11 -0
  16. data/lib/overcommit/hook/post_merge/bower_install.rb +11 -0
  17. data/lib/overcommit/hook/post_merge/bundle_install.rb +11 -0
  18. data/lib/overcommit/hook/post_merge/npm_install.rb +11 -0
  19. data/lib/overcommit/hook/post_rewrite/bower_install.rb +11 -0
  20. data/lib/overcommit/hook/post_rewrite/bundle_install.rb +11 -0
  21. data/lib/overcommit/hook/post_rewrite/npm_install.rb +11 -0
  22. data/lib/overcommit/hook/pre_commit/base.rb +1 -1
  23. data/lib/overcommit/hook/pre_commit/chamber_security.rb +1 -1
  24. data/lib/overcommit/hook/pre_commit/coffee_lint.rb +19 -27
  25. data/lib/overcommit/hook/pre_commit/css_lint.rb +2 -2
  26. data/lib/overcommit/hook/pre_commit/es_lint.rb +2 -2
  27. data/lib/overcommit/hook/pre_commit/execute_permissions.rb +64 -0
  28. data/lib/overcommit/hook/pre_commit/go_lint.rb +2 -2
  29. data/lib/overcommit/hook/pre_commit/go_vet.rb +2 -2
  30. data/lib/overcommit/hook/pre_commit/haml_lint.rb +2 -2
  31. data/lib/overcommit/hook/pre_commit/hard_tabs.rb +1 -1
  32. data/lib/overcommit/hook/pre_commit/hlint.rb +32 -0
  33. data/lib/overcommit/hook/pre_commit/html_hint.rb +1 -1
  34. data/lib/overcommit/hook/pre_commit/html_tidy.rb +1 -1
  35. data/lib/overcommit/hook/pre_commit/image_optim.rb +1 -1
  36. data/lib/overcommit/hook/pre_commit/java_checkstyle.rb +2 -2
  37. data/lib/overcommit/hook/pre_commit/js_hint.rb +2 -2
  38. data/lib/overcommit/hook/pre_commit/js_lint.rb +2 -2
  39. data/lib/overcommit/hook/pre_commit/jscs.rb +2 -2
  40. data/lib/overcommit/hook/pre_commit/jsl.rb +1 -1
  41. data/lib/overcommit/hook/pre_commit/pep257.rb +2 -2
  42. data/lib/overcommit/hook/pre_commit/pep8.rb +2 -2
  43. data/lib/overcommit/hook/pre_commit/puppet_lint.rb +24 -0
  44. data/lib/overcommit/hook/pre_commit/pyflakes.rb +2 -2
  45. data/lib/overcommit/hook/pre_commit/pylint.rb +2 -2
  46. data/lib/overcommit/hook/pre_commit/python_flake8.rb +2 -2
  47. data/lib/overcommit/hook/pre_commit/reek.rb +2 -2
  48. data/lib/overcommit/hook/pre_commit/rubo_cop.rb +2 -2
  49. data/lib/overcommit/hook/pre_commit/ruby_lint.rb +2 -2
  50. data/lib/overcommit/hook/pre_commit/scalariform.rb +2 -2
  51. data/lib/overcommit/hook/pre_commit/scalastyle.rb +2 -2
  52. data/lib/overcommit/hook/pre_commit/scss_lint.rb +2 -2
  53. data/lib/overcommit/hook/pre_commit/semi_standard.rb +5 -3
  54. data/lib/overcommit/hook/pre_commit/shell_check.rb +2 -2
  55. data/lib/overcommit/hook/pre_commit/slim_lint.rb +2 -2
  56. data/lib/overcommit/hook/pre_commit/sqlint.rb +24 -0
  57. data/lib/overcommit/hook/pre_commit/standard.rb +5 -3
  58. data/lib/overcommit/hook/pre_commit/trailing_whitespace.rb +1 -1
  59. data/lib/overcommit/hook/pre_commit/travis_lint.rb +1 -1
  60. data/lib/overcommit/hook/pre_commit/vint.rb +2 -2
  61. data/lib/overcommit/hook/pre_commit/xml_lint.rb +2 -2
  62. data/lib/overcommit/hook/shared/bower_install.rb +13 -0
  63. data/lib/overcommit/hook/shared/bundle_install.rb +13 -0
  64. data/lib/overcommit/hook/shared/npm_install.rb +13 -0
  65. data/lib/overcommit/hook_context/base.rb +2 -2
  66. data/lib/overcommit/hook_context/pre_commit.rb +1 -1
  67. data/lib/overcommit/hook_context/run_all.rb +5 -0
  68. data/lib/overcommit/hook_signer.rb +2 -1
  69. data/lib/overcommit/installer.rb +4 -2
  70. data/lib/overcommit/os.rb +34 -0
  71. data/lib/overcommit/printer.rb +1 -1
  72. data/lib/overcommit/subprocess.rb +19 -1
  73. data/lib/overcommit/utils.rb +17 -5
  74. data/lib/overcommit/utils/file_utils.rb +69 -0
  75. data/lib/overcommit/version.rb +1 -1
  76. data/template-dir/hooks/commit-msg +2 -0
  77. data/template-dir/hooks/overcommit-hook +2 -0
  78. data/template-dir/hooks/post-checkout +2 -0
  79. data/template-dir/hooks/post-commit +2 -0
  80. data/template-dir/hooks/post-merge +2 -0
  81. data/template-dir/hooks/post-rewrite +2 -0
  82. data/template-dir/hooks/pre-commit +2 -0
  83. data/template-dir/hooks/pre-push +2 -0
  84. data/template-dir/hooks/pre-rebase +2 -0
  85. metadata +23 -16
@@ -0,0 +1,24 @@
1
+ module Overcommit::Hook::PreCommit
2
+ # Runs 'puppet-lint' against any modified Puppet files.
3
+ #
4
+ # @see http://puppet-lint.com/
5
+ class PuppetLint < Base
6
+ MESSAGE_REGEX = /(?<file>(?:\w:)?.+):(?<line>\d+):\d+:(?<type>\w+)/
7
+
8
+ MESSAGE_TYPE_CATEGORIZER = lambda do |type|
9
+ type == 'ERROR' ? :error : :warning
10
+ end
11
+
12
+ def run
13
+ result = execute(command, args: applicable_files)
14
+ output = result.stdout.chomp.gsub(/^"|"$/, '')
15
+ return :pass if result.success? && output.empty?
16
+
17
+ extract_messages(
18
+ output.split("\n"),
19
+ MESSAGE_REGEX,
20
+ MESSAGE_TYPE_CATEGORIZER
21
+ )
22
+ end
23
+ end
24
+ end
@@ -3,10 +3,10 @@ module Overcommit::Hook::PreCommit
3
3
  #
4
4
  # @see https://pypi.python.org/pypi/pyflakes
5
5
  class Pyflakes < Base
6
- MESSAGE_REGEX = /^(?<file>[^:]+):(?<line>\d+):/
6
+ MESSAGE_REGEX = /^(?<file>(?:\w:)?[^:]+):(?<line>\d+):/
7
7
 
8
8
  def run
9
- result = execute(command + applicable_files)
9
+ result = execute(command, args: applicable_files)
10
10
  return :pass if result.success?
11
11
 
12
12
  errors = get_messages(result.stderr, :error)
@@ -3,7 +3,7 @@ module Overcommit::Hook::PreCommit
3
3
  #
4
4
  # @see http://www.pylint.org/
5
5
  class Pylint < Base
6
- MESSAGE_REGEX = /^(?<file>.+):(?<line>\d+):(?<type>[CEFRW])/
6
+ MESSAGE_REGEX = /^(?<file>(?:\w:)?.+):(?<line>\d+):(?<type>[CEFRW])/
7
7
 
8
8
  # Classify 'E' and 'F' message codes as errors,
9
9
  # everything else as warnings.
@@ -13,7 +13,7 @@ module Overcommit::Hook::PreCommit
13
13
  end
14
14
 
15
15
  def run
16
- result = execute(command + applicable_files)
16
+ result = execute(command, args: applicable_files)
17
17
  return :pass if result.success?
18
18
 
19
19
  output = result.stdout.chomp
@@ -3,7 +3,7 @@ module Overcommit::Hook::PreCommit
3
3
  #
4
4
  # @see https://pypi.python.org/pypi/flake8
5
5
  class PythonFlake8 < Base
6
- MESSAGE_REGEX = /^(?<file>.+):(?<line>\d+):\d+:\s(?<type>\w\d+)/
6
+ MESSAGE_REGEX = /^(?<file>(?:\w:)?.+):(?<line>\d+):\d+:\s(?<type>\w\d+)/
7
7
 
8
8
  # Classify 'Exxx' and 'Fxxx' message codes as errors,
9
9
  # everything else as warnings.
@@ -13,7 +13,7 @@ module Overcommit::Hook::PreCommit
13
13
  end
14
14
 
15
15
  def run
16
- result = execute(command + applicable_files)
16
+ result = execute(command, args: applicable_files)
17
17
  return :pass if result.success?
18
18
 
19
19
  output = result.stdout.chomp
@@ -4,14 +4,14 @@ module Overcommit::Hook::PreCommit
4
4
  # @see https://github.com/troessner/reek
5
5
  class Reek < Base
6
6
  def run
7
- result = execute(command + applicable_files)
7
+ result = execute(command, args: applicable_files)
8
8
  return :pass if result.success?
9
9
 
10
10
  output = scrub_output(result.stdout + result.stderr)
11
11
 
12
12
  extract_messages(
13
13
  output,
14
- /^\s*(?<file>[^:]+):(?<line>\d+):/,
14
+ /^\s*(?<file>(?:\w:)?[^:]+):(?<line>\d+):/,
15
15
  )
16
16
  end
17
17
 
@@ -8,12 +8,12 @@ module Overcommit::Hook::PreCommit
8
8
  end
9
9
 
10
10
  def run
11
- result = execute(command + applicable_files)
11
+ result = execute(command, args: applicable_files)
12
12
  return :pass if result.success?
13
13
 
14
14
  extract_messages(
15
15
  result.stdout.split("\n"),
16
- /^(?<file>[^:]+):(?<line>\d+):[^ ]+ (?<type>[^ ]+)/,
16
+ /^(?<file>(?:\w:)?[^:]+):(?<line>\d+):[^ ]+ (?<type>[^ ]+)/,
17
17
  MESSAGE_TYPE_CATEGORIZER,
18
18
  )
19
19
  end
@@ -8,12 +8,12 @@ module Overcommit::Hook::PreCommit
8
8
  end
9
9
 
10
10
  def run
11
- result = execute(command + applicable_files)
11
+ result = execute(command, args: applicable_files)
12
12
  return :pass if result.success?
13
13
 
14
14
  extract_messages(
15
15
  result.stdout.split("\n"),
16
- /^(?<file>[^:]+):(?<type>[^:]+):(?<line>\d+)/,
16
+ /^(?<file>(?:\w:)?[^:]+):(?<type>[^:]+):(?<line>\d+)/,
17
17
  MESSAGE_TYPE_CATEGORIZER
18
18
  )
19
19
  end
@@ -3,10 +3,10 @@ module Overcommit::Hook::PreCommit
3
3
  #
4
4
  # @see https://github.com/mdr/scalariform
5
5
  class Scalariform < Base
6
- MESSAGE_REGEX = /^\[(?<type>FAILED|ERROR)\]\s+(?<file>.+)/
6
+ MESSAGE_REGEX = /^\[(?<type>FAILED|ERROR)\]\s+(?<file>(?:\w:)?.+)/
7
7
 
8
8
  def run
9
- result = execute(command + applicable_files)
9
+ result = execute(command, args: applicable_files)
10
10
 
11
11
  # example message:
12
12
  # [FAILED] path/to/file.scala
@@ -5,13 +5,13 @@ module Overcommit::Hook::PreCommit
5
5
  class Scalastyle < Base
6
6
  MESSAGE_REGEX = /
7
7
  ^(?<type>error|warning)\s
8
- file=(?<file>.+)\s
8
+ file=(?<file>(?:\w:)?.+)\s
9
9
  message=.+\s
10
10
  line=(?<line>\d+)
11
11
  /x
12
12
 
13
13
  def run
14
- result = execute(command + applicable_files)
14
+ result = execute(command, args: applicable_files)
15
15
  output = result.stdout.chomp
16
16
  messages = output.split("\n").grep(MESSAGE_REGEX)
17
17
  return :pass if result.success? && messages.empty?
@@ -8,7 +8,7 @@ module Overcommit::Hook::PreCommit
8
8
  end
9
9
 
10
10
  def run
11
- result = execute(command + applicable_files)
11
+ result = execute(command, args: applicable_files)
12
12
 
13
13
  # Status code 81 indicates the applicable files were all filtered by
14
14
  # exclusions defined by the configuration. In this case, we're happy to
@@ -20,7 +20,7 @@ module Overcommit::Hook::PreCommit
20
20
 
21
21
  extract_messages(
22
22
  result.stdout.split("\n"),
23
- /^(?<file>[^:]+):(?<line>\d+)[^ ]* (?<type>[^ ]+)/,
23
+ /^(?<file>(?:\w:)?[^:]+):(?<line>\d+)[^ ]* (?<type>[^ ]+)/,
24
24
  MESSAGE_TYPE_CATEGORIZER,
25
25
  )
26
26
  end
@@ -3,16 +3,18 @@ module Overcommit::Hook::PreCommit
3
3
  #
4
4
  # @see https://github.com/Flet/semistandard
5
5
  class SemiStandard < Base
6
+ MESSAGE_REGEX = /^\s*(?<file>(?:\w:)?[^:]+):(?<line>\d+)/
7
+
6
8
  def run
7
- result = execute(command + applicable_files)
9
+ result = execute(command, args: applicable_files)
8
10
  output = result.stdout.chomp
9
11
  return :pass if result.success? && output.empty?
10
12
 
11
13
  # example message:
12
14
  # path/to/file.js:1:1: Error message (ruleName)
13
15
  extract_messages(
14
- output.split("\n")[1..-1], # ignore header line
15
- /^\s*(?<file>[^:]+):(?<line>\d+)/
16
+ output.split("\n").grep(MESSAGE_REGEX), # ignore header line
17
+ MESSAGE_REGEX
16
18
  )
17
19
  end
18
20
  end
@@ -8,12 +8,12 @@ module Overcommit::Hook::PreCommit
8
8
  end
9
9
 
10
10
  def run
11
- result = execute(command + applicable_files)
11
+ result = execute(command, args: applicable_files)
12
12
  return :pass if result.success?
13
13
 
14
14
  extract_messages(
15
15
  result.stdout.split("\n"),
16
- /^(?<file>[^:]+):(?<line>\d+):[^ ]+ (?<type>[^ ]+)/,
16
+ /^(?<file>(?:\w:)?[^:]+):(?<line>\d+):[^ ]+ (?<type>[^ ]+)/,
17
17
  MESSAGE_TYPE_CATEGORIZER,
18
18
  )
19
19
  end
@@ -8,12 +8,12 @@ module Overcommit::Hook::PreCommit
8
8
  end
9
9
 
10
10
  def run
11
- result = execute(command + applicable_files)
11
+ result = execute(command, args: applicable_files)
12
12
  return :pass if result.success?
13
13
 
14
14
  extract_messages(
15
15
  result.stdout.split("\n"),
16
- /^(?<file>[^:]+):(?<line>\d+)[^ ]* (?<type>[^ ]+)/,
16
+ /^(?<file>(?:\w:)?[^:]+):(?<line>\d+)[^ ]* (?<type>[^ ]+)/,
17
17
  MESSAGE_TYPE_CATEGORIZER,
18
18
  )
19
19
  end
@@ -0,0 +1,24 @@
1
+ module Overcommit::Hook::PreCommit
2
+ # Runs 'sqlint' against any modified SQL files.
3
+ #
4
+ # @see https://github.com/purcell/sqlint
5
+ class Sqlint < Base
6
+ MESSAGE_REGEX = /(?<file>(?:\w:)?.+):(?<line>\d+):\d+:(?<type>\w+)/
7
+
8
+ MESSAGE_TYPE_CATEGORIZER = lambda do |type|
9
+ type == 'ERROR' ? :error : :warning
10
+ end
11
+
12
+ def run
13
+ result = execute(command, args: applicable_files)
14
+ output = result.stdout.chomp
15
+ return :pass if result.success? && output.empty?
16
+
17
+ extract_messages(
18
+ output.split("\n"),
19
+ MESSAGE_REGEX,
20
+ MESSAGE_TYPE_CATEGORIZER
21
+ )
22
+ end
23
+ end
24
+ end
@@ -3,16 +3,18 @@ module Overcommit::Hook::PreCommit
3
3
  #
4
4
  # @see https://github.com/feross/standard
5
5
  class Standard < Base
6
+ MESSAGE_REGEX = /^\s*(?<file>(?:\w:)?[^:]+):(?<line>\d+)/
7
+
6
8
  def run
7
- result = execute(command + applicable_files)
9
+ result = execute(command, args: applicable_files)
8
10
  output = result.stdout.chomp
9
11
  return :pass if result.success? && output.empty?
10
12
 
11
13
  # example message:
12
14
  # path/to/file.js:1:1: Error message (ruleName)
13
15
  extract_messages(
14
- output.split("\n")[1..-1], # ignore header line
15
- /^\s*(?<file>[^:]+):(?<line>\d+)/
16
+ output.split("\n").grep(MESSAGE_REGEX), # ignore header line
17
+ MESSAGE_REGEX
16
18
  )
17
19
  end
18
20
  end
@@ -6,7 +6,7 @@ module Overcommit::Hook::PreCommit
6
6
 
7
7
  extract_messages(
8
8
  result.stdout.split("\n"),
9
- /^(?<file>[^:]+):(?<line>\d+)/,
9
+ /^(?<file>(?:\w:)?[^:]+):(?<line>\d+)/,
10
10
  )
11
11
  end
12
12
  end
@@ -4,7 +4,7 @@ module Overcommit::Hook::PreCommit
4
4
  # @see https://github.com/travis-ci/travis.rb
5
5
  class TravisLint < Base
6
6
  def run
7
- result = execute(command + applicable_files)
7
+ result = execute(command, args: applicable_files)
8
8
  return :pass if result.success?
9
9
 
10
10
  [:fail, (result.stdout + result.stderr).strip]
@@ -4,7 +4,7 @@ module Overcommit::Hook::PreCommit
4
4
  # @see https://github.com/Kuniwak/vint
5
5
  class Vint < Base
6
6
  def run
7
- result = execute(command + applicable_files)
7
+ result = execute(command, args: applicable_files)
8
8
  return :pass if result.success?
9
9
 
10
10
  return [:fail, result.stderr] unless result.stderr.empty?
@@ -13,7 +13,7 @@ module Overcommit::Hook::PreCommit
13
13
  # path/to/file.vim:1:1: Error message
14
14
  extract_messages(
15
15
  result.stdout.split("\n"),
16
- /^(?<file>[^:]+):(?<line>\d+)/
16
+ /^(?<file>(?:\w:)?[^:]+):(?<line>\d+)/
17
17
  )
18
18
  end
19
19
  end
@@ -3,10 +3,10 @@ module Overcommit::Hook::PreCommit
3
3
  #
4
4
  # @see http://xmlsoft.org/xmllint.html
5
5
  class XmlLint < Base
6
- MESSAGE_REGEX = /^(?<file>[^:]+):(?<line>\d+):/
6
+ MESSAGE_REGEX = /^(?<file>(?:\w:)?[^:]+):(?<line>\d+):/
7
7
 
8
8
  def run
9
- result = execute(command + applicable_files)
9
+ result = execute(command, args: applicable_files)
10
10
  output = result.stderr.chomp
11
11
 
12
12
  return :pass if result.success? && output.empty?
@@ -0,0 +1,13 @@
1
+ module Overcommit::Hook::Shared
2
+ # Shared code used by all BowerInstall hooks. Runs `bower install` when a
3
+ # change is detected in the repository's dependencies.
4
+ #
5
+ # @see http://bower.io/
6
+ module BowerInstall
7
+ def run
8
+ result = execute(command)
9
+ return :fail, result.stderr unless result.success?
10
+ :pass
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Overcommit::Hook::Shared
2
+ # Shared code used by all BundleInstall hooks. Runs `bundle install` when a
3
+ # change is detected in the repository's dependencies.
4
+ #
5
+ # @see http://bundler.io/
6
+ module BundleInstall
7
+ def run
8
+ result = execute(command)
9
+ return :fail, result.stdout unless result.success?
10
+ :pass
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Overcommit::Hook::Shared
2
+ # Shared code used by all NpmInstall hooks. Runs `npm install` when a change
3
+ # is detected in the repository's dependencies.
4
+ #
5
+ # @see https://www.npmjs.com/
6
+ module NpmInstall
7
+ def run
8
+ result = execute(command)
9
+ return :fail, result.stderr unless result.success?
10
+ :pass
11
+ end
12
+ end
13
+ end
@@ -49,7 +49,7 @@ module Overcommit::HookContext
49
49
  #
50
50
  # @return [String]
51
51
  def hook_script_name
52
- hook_type_name.gsub('_', '-')
52
+ hook_type_name.tr('_', '-')
53
53
  end
54
54
 
55
55
  # Initializes anything related to the environment.
@@ -116,7 +116,7 @@ module Overcommit::HookContext
116
116
  # a file, but the actual working tree will have a directory.
117
117
  def filter_directories(modified_files)
118
118
  modified_files.reject do |file|
119
- File.directory?(file) && !File.symlink?(file)
119
+ File.directory?(file) && !Overcommit::Utils::FileUtils.symlink?(file)
120
120
  end
121
121
  end
122
122
  end
@@ -25,7 +25,7 @@ module Overcommit::HookContext
25
25
  each do |match|
26
26
  return @amendment if
27
27
  # True if the command uses a git alias for `commit --amend`
28
- @amendment = !(/git\s+#{match[0]}/ =~ cmd).nil?
28
+ @amendment = !(/git(\.exe)?\s+#{match[0]}/ =~ cmd).nil?
29
29
  end
30
30
 
31
31
  @amendment
@@ -32,6 +32,11 @@ module Overcommit::HookContext
32
32
  'pre-commit'
33
33
  end
34
34
 
35
+ def initial_commit?
36
+ return @initial_commit unless @initial_commit.nil?
37
+ @initial_commit = Overcommit::GitRepo.initial_commit?
38
+ end
39
+
35
40
  private
36
41
 
37
42
  def count_lines(file)
@@ -49,7 +49,8 @@ module Overcommit
49
49
  end
50
50
 
51
51
  def signable_file?(file)
52
- file.start_with?(".#{File::SEPARATOR}") &&
52
+ sep = Overcommit::OS.windows? ? '\\' : File::SEPARATOR
53
+ file.start_with?(".#{sep}") &&
53
54
  Overcommit::GitRepo.tracked?(file)
54
55
  end
55
56
 
@@ -114,7 +114,8 @@ module Overcommit
114
114
  "Hook '#{File.expand_path(hook_type)}' already exists and " \
115
115
  'was not installed by Overcommit'
116
116
  end
117
- FileUtils.ln_sf('overcommit-hook', hook_type)
117
+ FileUtils.rm_f(hook_type)
118
+ Overcommit::Utils::FileUtils.symlink('overcommit-hook', hook_type)
118
119
  end
119
120
  end
120
121
  end
@@ -177,7 +178,8 @@ module Overcommit
177
178
  def overcommit_hook?(file)
178
179
  return true if File.read(file) =~ /OVERCOMMIT_DISABLE/
179
180
  # TODO: Remove these checks once we hit version 1.0
180
- File.symlink?(file) && File.readlink(file) == 'overcommit-hook'
181
+ Overcommit::Utils::FileUtils.symlink?(file) &&
182
+ Overcommit::Utils::FileUtils.readlink(file) == 'overcommit-hook'
181
183
  rescue Errno::ENOENT
182
184
  # Some Ruby implementations (e.g. JRuby) raise an error when the file
183
185
  # doesn't exist. Standardize the behavior to return false.