overcommit-jeygeethanmedia 0.53.1

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 (226) hide show
  1. checksums.yaml +7 -0
  2. data/bin/overcommit +50 -0
  3. data/config/default.yml +1356 -0
  4. data/config/starter.yml +33 -0
  5. data/lib/overcommit.rb +26 -0
  6. data/lib/overcommit/cli.rb +223 -0
  7. data/lib/overcommit/command_splitter.rb +146 -0
  8. data/lib/overcommit/configuration.rb +350 -0
  9. data/lib/overcommit/configuration_loader.rb +96 -0
  10. data/lib/overcommit/configuration_validator.rb +186 -0
  11. data/lib/overcommit/constants.rb +12 -0
  12. data/lib/overcommit/exceptions.rb +52 -0
  13. data/lib/overcommit/git_config.rb +22 -0
  14. data/lib/overcommit/git_repo.rb +286 -0
  15. data/lib/overcommit/git_version.rb +17 -0
  16. data/lib/overcommit/hook/base.rb +294 -0
  17. data/lib/overcommit/hook/commit_msg/base.rb +14 -0
  18. data/lib/overcommit/hook/commit_msg/capitalized_subject.rb +25 -0
  19. data/lib/overcommit/hook/commit_msg/empty_message.rb +12 -0
  20. data/lib/overcommit/hook/commit_msg/gerrit_change_id.rb +22 -0
  21. data/lib/overcommit/hook/commit_msg/hard_tabs.rb +17 -0
  22. data/lib/overcommit/hook/commit_msg/message_format.rb +31 -0
  23. data/lib/overcommit/hook/commit_msg/russian_novel.rb +16 -0
  24. data/lib/overcommit/hook/commit_msg/single_line_subject.rb +16 -0
  25. data/lib/overcommit/hook/commit_msg/spell_check.rb +45 -0
  26. data/lib/overcommit/hook/commit_msg/text_width.rb +56 -0
  27. data/lib/overcommit/hook/commit_msg/trailing_period.rb +16 -0
  28. data/lib/overcommit/hook/post_checkout/base.rb +22 -0
  29. data/lib/overcommit/hook/post_checkout/bower_install.rb +13 -0
  30. data/lib/overcommit/hook/post_checkout/bundle_install.rb +13 -0
  31. data/lib/overcommit/hook/post_checkout/composer_install.rb +13 -0
  32. data/lib/overcommit/hook/post_checkout/index_tags.rb +12 -0
  33. data/lib/overcommit/hook/post_checkout/npm_install.rb +13 -0
  34. data/lib/overcommit/hook/post_checkout/submodule_status.rb +12 -0
  35. data/lib/overcommit/hook/post_checkout/yarn_install.rb +13 -0
  36. data/lib/overcommit/hook/post_commit/base.rb +12 -0
  37. data/lib/overcommit/hook/post_commit/bower_install.rb +13 -0
  38. data/lib/overcommit/hook/post_commit/bundle_install.rb +13 -0
  39. data/lib/overcommit/hook/post_commit/commitplease.rb +16 -0
  40. data/lib/overcommit/hook/post_commit/composer_install.rb +13 -0
  41. data/lib/overcommit/hook/post_commit/git_guilt.rb +43 -0
  42. data/lib/overcommit/hook/post_commit/index_tags.rb +12 -0
  43. data/lib/overcommit/hook/post_commit/npm_install.rb +13 -0
  44. data/lib/overcommit/hook/post_commit/submodule_status.rb +12 -0
  45. data/lib/overcommit/hook/post_commit/yarn_install.rb +13 -0
  46. data/lib/overcommit/hook/post_merge/base.rb +12 -0
  47. data/lib/overcommit/hook/post_merge/bower_install.rb +13 -0
  48. data/lib/overcommit/hook/post_merge/bundle_install.rb +13 -0
  49. data/lib/overcommit/hook/post_merge/composer_install.rb +13 -0
  50. data/lib/overcommit/hook/post_merge/index_tags.rb +12 -0
  51. data/lib/overcommit/hook/post_merge/npm_install.rb +13 -0
  52. data/lib/overcommit/hook/post_merge/submodule_status.rb +12 -0
  53. data/lib/overcommit/hook/post_merge/yarn_install.rb +13 -0
  54. data/lib/overcommit/hook/post_rewrite/base.rb +12 -0
  55. data/lib/overcommit/hook/post_rewrite/bower_install.rb +13 -0
  56. data/lib/overcommit/hook/post_rewrite/bundle_install.rb +13 -0
  57. data/lib/overcommit/hook/post_rewrite/composer_install.rb +13 -0
  58. data/lib/overcommit/hook/post_rewrite/index_tags.rb +19 -0
  59. data/lib/overcommit/hook/post_rewrite/npm_install.rb +13 -0
  60. data/lib/overcommit/hook/post_rewrite/submodule_status.rb +12 -0
  61. data/lib/overcommit/hook/post_rewrite/yarn_install.rb +13 -0
  62. data/lib/overcommit/hook/pre_commit/author_email.rb +26 -0
  63. data/lib/overcommit/hook/pre_commit/author_name.rb +25 -0
  64. data/lib/overcommit/hook/pre_commit/base.rb +19 -0
  65. data/lib/overcommit/hook/pre_commit/berksfile_check.rb +24 -0
  66. data/lib/overcommit/hook/pre_commit/broken_symlinks.rb +17 -0
  67. data/lib/overcommit/hook/pre_commit/bundle_audit.rb +24 -0
  68. data/lib/overcommit/hook/pre_commit/bundle_check.rb +32 -0
  69. data/lib/overcommit/hook/pre_commit/bundle_outdated.rb +25 -0
  70. data/lib/overcommit/hook/pre_commit/case_conflicts.rb +27 -0
  71. data/lib/overcommit/hook/pre_commit/chamber_compare.rb +43 -0
  72. data/lib/overcommit/hook/pre_commit/chamber_security.rb +15 -0
  73. data/lib/overcommit/hook/pre_commit/chamber_verification.rb +36 -0
  74. data/lib/overcommit/hook/pre_commit/code_spell_check.rb +36 -0
  75. data/lib/overcommit/hook/pre_commit/coffee_lint.rb +35 -0
  76. data/lib/overcommit/hook/pre_commit/cook_style.rb +35 -0
  77. data/lib/overcommit/hook/pre_commit/credo.rb +27 -0
  78. data/lib/overcommit/hook/pre_commit/css_lint.rb +26 -0
  79. data/lib/overcommit/hook/pre_commit/dogma.rb +33 -0
  80. data/lib/overcommit/hook/pre_commit/es_lint.rb +38 -0
  81. data/lib/overcommit/hook/pre_commit/execute_permissions.rb +76 -0
  82. data/lib/overcommit/hook/pre_commit/fasterer.rb +25 -0
  83. data/lib/overcommit/hook/pre_commit/file_size.rb +47 -0
  84. data/lib/overcommit/hook/pre_commit/fix_me.rb +17 -0
  85. data/lib/overcommit/hook/pre_commit/flay.rb +38 -0
  86. data/lib/overcommit/hook/pre_commit/foodcritic.rb +149 -0
  87. data/lib/overcommit/hook/pre_commit/forbidden_branches.rb +26 -0
  88. data/lib/overcommit/hook/pre_commit/ginkgo_focus.rb +23 -0
  89. data/lib/overcommit/hook/pre_commit/go_fmt.rb +17 -0
  90. data/lib/overcommit/hook/pre_commit/go_lint.rb +29 -0
  91. data/lib/overcommit/hook/pre_commit/go_vet.rb +24 -0
  92. data/lib/overcommit/hook/pre_commit/golangci_lint.rb +21 -0
  93. data/lib/overcommit/hook/pre_commit/hadolint.rb +27 -0
  94. data/lib/overcommit/hook/pre_commit/haml_lint.rb +23 -0
  95. data/lib/overcommit/hook/pre_commit/hard_tabs.rb +15 -0
  96. data/lib/overcommit/hook/pre_commit/hlint.rb +34 -0
  97. data/lib/overcommit/hook/pre_commit/html_hint.rb +23 -0
  98. data/lib/overcommit/hook/pre_commit/html_tidy.rb +30 -0
  99. data/lib/overcommit/hook/pre_commit/image_optim.rb +28 -0
  100. data/lib/overcommit/hook/pre_commit/java_checkstyle.rb +27 -0
  101. data/lib/overcommit/hook/pre_commit/js_hint.rb +23 -0
  102. data/lib/overcommit/hook/pre_commit/js_lint.rb +22 -0
  103. data/lib/overcommit/hook/pre_commit/jscs.rb +27 -0
  104. data/lib/overcommit/hook/pre_commit/jsl.rb +28 -0
  105. data/lib/overcommit/hook/pre_commit/json_syntax.rb +21 -0
  106. data/lib/overcommit/hook/pre_commit/kt_lint.rb +19 -0
  107. data/lib/overcommit/hook/pre_commit/license_finder.rb +14 -0
  108. data/lib/overcommit/hook/pre_commit/license_header.rb +48 -0
  109. data/lib/overcommit/hook/pre_commit/line_endings.rb +77 -0
  110. data/lib/overcommit/hook/pre_commit/local_paths_in_gemfile.rb +16 -0
  111. data/lib/overcommit/hook/pre_commit/mdl.rb +29 -0
  112. data/lib/overcommit/hook/pre_commit/merge_conflicts.rb +16 -0
  113. data/lib/overcommit/hook/pre_commit/nginx_test.rb +26 -0
  114. data/lib/overcommit/hook/pre_commit/pep257.rb +23 -0
  115. data/lib/overcommit/hook/pre_commit/pep8.rb +23 -0
  116. data/lib/overcommit/hook/pre_commit/php_cs.rb +43 -0
  117. data/lib/overcommit/hook/pre_commit/php_cs_fixer.rb +57 -0
  118. data/lib/overcommit/hook/pre_commit/php_lint.rb +44 -0
  119. data/lib/overcommit/hook/pre_commit/php_stan.rb +30 -0
  120. data/lib/overcommit/hook/pre_commit/pronto.rb +12 -0
  121. data/lib/overcommit/hook/pre_commit/puppet_lint.rb +26 -0
  122. data/lib/overcommit/hook/pre_commit/puppet_metadata_json_lint.rb +29 -0
  123. data/lib/overcommit/hook/pre_commit/pycodestyle.rb +23 -0
  124. data/lib/overcommit/hook/pre_commit/pydocstyle.rb +23 -0
  125. data/lib/overcommit/hook/pre_commit/pyflakes.rb +32 -0
  126. data/lib/overcommit/hook/pre_commit/pylint.rb +32 -0
  127. data/lib/overcommit/hook/pre_commit/python_flake8.rb +32 -0
  128. data/lib/overcommit/hook/pre_commit/rails_best_practices.rb +34 -0
  129. data/lib/overcommit/hook/pre_commit/rails_schema_up_to_date.rb +58 -0
  130. data/lib/overcommit/hook/pre_commit/rake_target.rb +12 -0
  131. data/lib/overcommit/hook/pre_commit/reek.rb +26 -0
  132. data/lib/overcommit/hook/pre_commit/rst_lint.rb +27 -0
  133. data/lib/overcommit/hook/pre_commit/rubo_cop.rb +35 -0
  134. data/lib/overcommit/hook/pre_commit/ruby_lint.rb +23 -0
  135. data/lib/overcommit/hook/pre_commit/ruby_syntax.rb +27 -0
  136. data/lib/overcommit/hook/pre_commit/scalariform.rb +22 -0
  137. data/lib/overcommit/hook/pre_commit/scalastyle.rb +31 -0
  138. data/lib/overcommit/hook/pre_commit/scss_lint.rb +43 -0
  139. data/lib/overcommit/hook/pre_commit/semi_standard.rb +23 -0
  140. data/lib/overcommit/hook/pre_commit/shell_check.rb +23 -0
  141. data/lib/overcommit/hook/pre_commit/slim_lint.rb +23 -0
  142. data/lib/overcommit/hook/pre_commit/sqlint.rb +26 -0
  143. data/lib/overcommit/hook/pre_commit/standard.rb +23 -0
  144. data/lib/overcommit/hook/pre_commit/stylelint.rb +23 -0
  145. data/lib/overcommit/hook/pre_commit/swift_lint.rb +19 -0
  146. data/lib/overcommit/hook/pre_commit/terraform_format.rb +19 -0
  147. data/lib/overcommit/hook/pre_commit/trailing_whitespace.rb +15 -0
  148. data/lib/overcommit/hook/pre_commit/travis_lint.rb +15 -0
  149. data/lib/overcommit/hook/pre_commit/ts_lint.rb +28 -0
  150. data/lib/overcommit/hook/pre_commit/vint.rb +22 -0
  151. data/lib/overcommit/hook/pre_commit/w3c_css.rb +67 -0
  152. data/lib/overcommit/hook/pre_commit/w3c_html.rb +64 -0
  153. data/lib/overcommit/hook/pre_commit/xml_lint.rb +24 -0
  154. data/lib/overcommit/hook/pre_commit/xml_syntax.rb +21 -0
  155. data/lib/overcommit/hook/pre_commit/yaml_lint.rb +18 -0
  156. data/lib/overcommit/hook/pre_commit/yaml_syntax.rb +20 -0
  157. data/lib/overcommit/hook/pre_commit/yard_coverage.rb +90 -0
  158. data/lib/overcommit/hook/pre_commit/yarn_check.rb +37 -0
  159. data/lib/overcommit/hook/pre_push/base.rb +33 -0
  160. data/lib/overcommit/hook/pre_push/brakeman.rb +15 -0
  161. data/lib/overcommit/hook/pre_push/cargo_test.rb +12 -0
  162. data/lib/overcommit/hook/pre_push/go_test.rb +14 -0
  163. data/lib/overcommit/hook/pre_push/golangci_lint.rb +16 -0
  164. data/lib/overcommit/hook/pre_push/minitest.rb +20 -0
  165. data/lib/overcommit/hook/pre_push/php_unit.rb +16 -0
  166. data/lib/overcommit/hook/pre_push/pronto.rb +12 -0
  167. data/lib/overcommit/hook/pre_push/protected_branches.rb +74 -0
  168. data/lib/overcommit/hook/pre_push/pytest.rb +16 -0
  169. data/lib/overcommit/hook/pre_push/python_nose.rb +16 -0
  170. data/lib/overcommit/hook/pre_push/r_spec.rb +16 -0
  171. data/lib/overcommit/hook/pre_push/rake_target.rb +12 -0
  172. data/lib/overcommit/hook/pre_push/test_unit.rb +16 -0
  173. data/lib/overcommit/hook/pre_rebase/base.rb +14 -0
  174. data/lib/overcommit/hook/pre_rebase/merged_commits.rb +31 -0
  175. data/lib/overcommit/hook/prepare_commit_msg/base.rb +25 -0
  176. data/lib/overcommit/hook/prepare_commit_msg/replace_branch.rb +57 -0
  177. data/lib/overcommit/hook/shared/bower_install.rb +15 -0
  178. data/lib/overcommit/hook/shared/bundle_install.rb +15 -0
  179. data/lib/overcommit/hook/shared/composer_install.rb +15 -0
  180. data/lib/overcommit/hook/shared/index_tags.rb +14 -0
  181. data/lib/overcommit/hook/shared/npm_install.rb +15 -0
  182. data/lib/overcommit/hook/shared/pronto.rb +21 -0
  183. data/lib/overcommit/hook/shared/rake_target.rb +26 -0
  184. data/lib/overcommit/hook/shared/submodule_status.rb +32 -0
  185. data/lib/overcommit/hook/shared/yarn_install.rb +15 -0
  186. data/lib/overcommit/hook_context.rb +19 -0
  187. data/lib/overcommit/hook_context/base.rb +139 -0
  188. data/lib/overcommit/hook_context/commit_msg.rb +48 -0
  189. data/lib/overcommit/hook_context/post_checkout.rb +36 -0
  190. data/lib/overcommit/hook_context/post_commit.rb +33 -0
  191. data/lib/overcommit/hook_context/post_merge.rb +37 -0
  192. data/lib/overcommit/hook_context/post_rewrite.rb +49 -0
  193. data/lib/overcommit/hook_context/pre_commit.rb +212 -0
  194. data/lib/overcommit/hook_context/pre_push.rb +89 -0
  195. data/lib/overcommit/hook_context/pre_rebase.rb +38 -0
  196. data/lib/overcommit/hook_context/prepare_commit_msg.rb +34 -0
  197. data/lib/overcommit/hook_context/run_all.rb +48 -0
  198. data/lib/overcommit/hook_loader/base.rb +48 -0
  199. data/lib/overcommit/hook_loader/built_in_hook_loader.rb +14 -0
  200. data/lib/overcommit/hook_loader/plugin_hook_loader.rb +102 -0
  201. data/lib/overcommit/hook_runner.rb +219 -0
  202. data/lib/overcommit/hook_signer.rb +123 -0
  203. data/lib/overcommit/installer.rb +193 -0
  204. data/lib/overcommit/interrupt_handler.rb +91 -0
  205. data/lib/overcommit/logger.rb +92 -0
  206. data/lib/overcommit/message_processor.rb +148 -0
  207. data/lib/overcommit/os.rb +38 -0
  208. data/lib/overcommit/printer.rb +145 -0
  209. data/lib/overcommit/subprocess.rb +98 -0
  210. data/lib/overcommit/utils.rb +309 -0
  211. data/lib/overcommit/utils/file_utils.rb +71 -0
  212. data/lib/overcommit/utils/messages_utils.rb +77 -0
  213. data/lib/overcommit/version.rb +6 -0
  214. data/libexec/gerrit-change-id +174 -0
  215. data/libexec/index-tags +17 -0
  216. data/template-dir/hooks/commit-msg +116 -0
  217. data/template-dir/hooks/overcommit-hook +116 -0
  218. data/template-dir/hooks/post-checkout +116 -0
  219. data/template-dir/hooks/post-commit +116 -0
  220. data/template-dir/hooks/post-merge +116 -0
  221. data/template-dir/hooks/post-rewrite +116 -0
  222. data/template-dir/hooks/pre-commit +116 -0
  223. data/template-dir/hooks/pre-push +116 -0
  224. data/template-dir/hooks/pre-rebase +116 -0
  225. data/template-dir/hooks/prepare-commit-msg +116 -0
  226. metadata +303 -0
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/bower_install'
4
+
5
+ module Overcommit::Hook::PostMerge
6
+ # Runs `bower install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::BowerInstall
10
+ class BowerInstall < Base
11
+ include Overcommit::Hook::Shared::BowerInstall
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/bundle_install'
4
+
5
+ module Overcommit::Hook::PostMerge
6
+ # Runs `bundle install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::BundleInstall
10
+ class BundleInstall < Base
11
+ include Overcommit::Hook::Shared::BundleInstall
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/composer_install'
4
+
5
+ module Overcommit::Hook::PostMerge
6
+ # Runs `composer install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::ComposerInstall
10
+ class ComposerInstall < Base
11
+ include Overcommit::Hook::Shared::ComposerInstall
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/index_tags'
4
+
5
+ module Overcommit::Hook::PostMerge
6
+ # Updates ctags index for all source code in the repository.
7
+ #
8
+ # @see Overcommit::Hook::Shared::IndexTags
9
+ class IndexTags < Base
10
+ include Overcommit::Hook::Shared::IndexTags
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/npm_install'
4
+
5
+ module Overcommit::Hook::PostMerge
6
+ # Runs `npm install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::NpmInstall
10
+ class NpmInstall < Base
11
+ include Overcommit::Hook::Shared::NpmInstall
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/submodule_status'
4
+
5
+ module Overcommit::Hook::PostMerge
6
+ # Checks the status of submodules in the current repository and
7
+ # notifies the user if any are uninitialized, out of date with
8
+ # the current index, or contain merge conflicts.
9
+ class SubmoduleStatus < Base
10
+ include Overcommit::Hook::Shared::SubmoduleStatus
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/yarn_install'
4
+
5
+ module Overcommit::Hook::PostMerge
6
+ # Runs `yarn install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::YarnInstall
10
+ class YarnInstall < Base
11
+ include Overcommit::Hook::Shared::YarnInstall
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+
5
+ module Overcommit::Hook::PostRewrite
6
+ # Functionality common to all post-rewrite hooks.
7
+ class Base < Overcommit::Hook::Base
8
+ extend Forwardable
9
+
10
+ def_delegators :@context, :amend?, :rebase?, :rewritten_commits
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/bower_install'
4
+
5
+ module Overcommit::Hook::PostRewrite
6
+ # Runs `bower install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::BowerInstall
10
+ class BowerInstall < Base
11
+ include Overcommit::Hook::Shared::BowerInstall
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/bundle_install'
4
+
5
+ module Overcommit::Hook::PostRewrite
6
+ # Runs `bundle install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::BundleInstall
10
+ class BundleInstall < Base
11
+ include Overcommit::Hook::Shared::BundleInstall
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/composer_install'
4
+
5
+ module Overcommit::Hook::PostRewrite
6
+ # Runs `composer install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::ComposerInstall
10
+ class ComposerInstall < Base
11
+ include Overcommit::Hook::Shared::ComposerInstall
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/index_tags'
4
+
5
+ module Overcommit::Hook::PostRewrite
6
+ # Updates ctags index for all source code in the repository.
7
+ #
8
+ # @see Overcommit::Hook::Shared::IndexTags
9
+ class IndexTags < Base
10
+ include Overcommit::Hook::Shared::IndexTags
11
+
12
+ def run
13
+ # Ignore unless this is a rebase (amends are covered by post-commit hook)
14
+ return :pass unless rebase?
15
+
16
+ super
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/npm_install'
4
+
5
+ module Overcommit::Hook::PostRewrite
6
+ # Runs `npm install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::NpmInstall
10
+ class NpmInstall < Base
11
+ include Overcommit::Hook::Shared::NpmInstall
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/submodule_status'
4
+
5
+ module Overcommit::Hook::PostRewrite
6
+ # Checks the status of submodules in the current repository and
7
+ # notifies the user if any are uninitialized, out of date with
8
+ # the current index, or contain merge conflicts.
9
+ class SubmoduleStatus < Base
10
+ include Overcommit::Hook::Shared::SubmoduleStatus
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/yarn_install'
4
+
5
+ module Overcommit::Hook::PostRewrite
6
+ # Runs `yarn install` when a change is detected in the repository's
7
+ # dependencies.
8
+ #
9
+ # @see Overcommit::Hook::Shared::YarnInstall
10
+ class YarnInstall < Base
11
+ include Overcommit::Hook::Shared::YarnInstall
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PreCommit
4
+ # Checks the format of an author's email address.
5
+ class AuthorEmail < Base
6
+ def run
7
+ email =
8
+ if ENV.key?('GIT_AUTHOR_EMAIL')
9
+ ENV['GIT_AUTHOR_EMAIL']
10
+ else
11
+ result = execute(%w[git config --get user.email])
12
+ result.stdout.chomp
13
+ end
14
+
15
+ unless email.match?(/#{config['pattern']}/)
16
+ return :fail,
17
+ "Author has an invalid email address: '#{email}'\n" \
18
+ 'Set your email with ' \
19
+ '`git config --global user.email your_email@example.com` ' \
20
+ 'or via the GIT_AUTHOR_EMAIL environment variable'
21
+ end
22
+
23
+ :pass
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PreCommit
4
+ # Ensures that a commit author has a name with at least first and last names.
5
+ class AuthorName < Base
6
+ def run
7
+ name =
8
+ if ENV.key?('GIT_AUTHOR_NAME')
9
+ ENV['GIT_AUTHOR_NAME']
10
+ else
11
+ result = execute(%w[git config --get user.name])
12
+ result.stdout.chomp
13
+ end
14
+
15
+ unless name.split(' ').count >= 2
16
+ return :fail,
17
+ "Author must have at least first and last name, but was: #{name}.\n" \
18
+ 'Set your name with `git config --global user.name "Your Name"` ' \
19
+ 'or via the GIT_AUTHOR_NAME environment variable'
20
+ end
21
+
22
+ :pass
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+ require 'overcommit/utils/messages_utils'
5
+
6
+ module Overcommit::Hook::PreCommit
7
+ # Functionality common to all pre-commit hooks.
8
+ class Base < Overcommit::Hook::Base
9
+ extend Forwardable
10
+
11
+ def_delegators :@context, :modified_lines_in_file, :amendment?, :initial_commit?
12
+
13
+ private
14
+
15
+ def extract_messages(*args)
16
+ Overcommit::Utils::MessagesUtils.extract_messages(*args)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PreCommit
4
+ # Check if local Berksfile.lock matches Berksfile when either changes, unless
5
+ # Berksfile.lock is ignored by git.
6
+ #
7
+ # @see http://berkshelf.com/
8
+ class BerksfileCheck < Base
9
+ LOCK_FILE = 'Berksfile.lock'
10
+
11
+ def run
12
+ # Ignore if Berksfile.lock is not tracked by git
13
+ ignored_files = execute(%w[git ls-files -o -i --exclude-standard]).stdout.split("\n")
14
+ return :pass if ignored_files.include?(LOCK_FILE)
15
+
16
+ result = execute(command)
17
+ unless result.success?
18
+ return :fail, result.stderr
19
+ end
20
+
21
+ :pass
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PreCommit
4
+ # Checks for broken symlinks.
5
+ class BrokenSymlinks < Base
6
+ def run
7
+ broken_symlinks = applicable_files.
8
+ select { |file| Overcommit::Utils.broken_symlink?(file) }
9
+
10
+ if broken_symlinks.any?
11
+ return :fail, "Broken symlinks detected:\n#{broken_symlinks.join("\n")}"
12
+ end
13
+
14
+ :pass
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PreCommit
4
+ # Checks for vulnerable versions of gems in Gemfile.lock.
5
+ #
6
+ # @see https://github.com/rubysec/bundler-audit
7
+ class BundleAudit < Base
8
+ LOCK_FILE = 'Gemfile.lock'
9
+
10
+ def run
11
+ # Ignore if Gemfile.lock is not tracked by git
12
+ ignored_files = execute(%W[git ls-files -o -i --exclude-standard -- #{LOCK_FILE}]).
13
+ stdout.split("\n")
14
+ return :pass if ignored_files.include?(LOCK_FILE)
15
+
16
+ result = execute(command)
17
+ if result.success?
18
+ :pass
19
+ else
20
+ return [:warn, result.stdout]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PreCommit
4
+ # Check if local Gemfile.lock matches Gemfile when either changes, unless
5
+ # Gemfile.lock is ignored by git.
6
+ #
7
+ # @see http://bundler.io/
8
+ class BundleCheck < Base
9
+ LOCK_FILE = 'Gemfile.lock'
10
+
11
+ def run
12
+ # Ignore if Gemfile.lock is not tracked by git
13
+ ignored_files = execute(%w[git ls-files -o -i --exclude-standard]).stdout.split("\n")
14
+ return :pass if ignored_files.include?(LOCK_FILE)
15
+
16
+ previous_lockfile = File.read(LOCK_FILE) if File.exist?(LOCK_FILE)
17
+
18
+ result = execute(command)
19
+ unless result.success?
20
+ return :fail, result.stdout
21
+ end
22
+
23
+ new_lockfile = File.read(LOCK_FILE) if File.exist?(LOCK_FILE)
24
+ if previous_lockfile != new_lockfile
25
+ return :fail, "#{LOCK_FILE} is not up-to-date -- run \
26
+ `#{command.join(' ')}` or add the Gemfile and/or Gemfile.lock".squeeze
27
+ end
28
+
29
+ :pass
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PreCommit
4
+ # Check if any gems in Gemfile.lock have newer versions, unless the
5
+ # Gemfile.lock is ignored by Git.
6
+ #
7
+ # @see http://bundler.io/bundle_outdated.html
8
+ class BundleOutdated < Base
9
+ LOCK_FILE = 'Gemfile.lock'
10
+
11
+ def run
12
+ # Ignore if Gemfile.lock is not tracked by git
13
+ ignored_files = execute(%w[git ls-files -o -i --exclude-standard]).stdout.split("\n")
14
+ return :pass if ignored_files.include?(LOCK_FILE)
15
+
16
+ result = execute(command)
17
+ warn_msgs = result.stdout.split("\n").
18
+ reject { |str| str.strip.empty? }.
19
+ reject { |str| (str.strip =~ /^(\[|\()?warning|deprecation/i) }
20
+ warnings = warn_msgs.map { |msg| Overcommit::Hook::Message.new(:warning, nil, nil, msg) }
21
+
22
+ warnings.empty? ? :pass : warnings
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PreCommit
4
+ # Checks for files that would conflict in case-insensitive filesystems
5
+ # Adapted from https://github.com/pre-commit/pre-commit-hooks
6
+ class CaseConflicts < Base
7
+ def run
8
+ repo_files = Set.new(applicable_files)
9
+
10
+ unless Overcommit::GitRepo.initial_commit?
11
+ paths = repo_files.map { |file| File.dirname(file) + File::SEPARATOR }.uniq
12
+ repo_files += Overcommit::GitRepo.list_files(paths)
13
+ end
14
+
15
+ conflict_hash = repo_files.classify(&:downcase).
16
+ select { |_, files| files.size > 1 }
17
+ conflict_files = applicable_files.
18
+ select { |file| conflict_hash.include?(file.downcase) }
19
+
20
+ conflict_files.map do |file|
21
+ conflicts = conflict_hash[file.downcase].map { |f| File.basename(f) }
22
+ msg = "Conflict detected for case-insensitive file systems: #{conflicts.join(', ')}"
23
+ Overcommit::Hook::Message.new(:error, file, nil, msg)
24
+ end
25
+ end
26
+ end
27
+ end