overcommit-jeygeethanmedia 0.53.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/overcommit +50 -0
- data/config/default.yml +1356 -0
- data/config/starter.yml +33 -0
- data/lib/overcommit.rb +26 -0
- data/lib/overcommit/cli.rb +223 -0
- data/lib/overcommit/command_splitter.rb +146 -0
- data/lib/overcommit/configuration.rb +350 -0
- data/lib/overcommit/configuration_loader.rb +96 -0
- data/lib/overcommit/configuration_validator.rb +186 -0
- data/lib/overcommit/constants.rb +12 -0
- data/lib/overcommit/exceptions.rb +52 -0
- data/lib/overcommit/git_config.rb +22 -0
- data/lib/overcommit/git_repo.rb +286 -0
- data/lib/overcommit/git_version.rb +17 -0
- data/lib/overcommit/hook/base.rb +294 -0
- data/lib/overcommit/hook/commit_msg/base.rb +14 -0
- data/lib/overcommit/hook/commit_msg/capitalized_subject.rb +25 -0
- data/lib/overcommit/hook/commit_msg/empty_message.rb +12 -0
- data/lib/overcommit/hook/commit_msg/gerrit_change_id.rb +22 -0
- data/lib/overcommit/hook/commit_msg/hard_tabs.rb +17 -0
- data/lib/overcommit/hook/commit_msg/message_format.rb +31 -0
- data/lib/overcommit/hook/commit_msg/russian_novel.rb +16 -0
- data/lib/overcommit/hook/commit_msg/single_line_subject.rb +16 -0
- data/lib/overcommit/hook/commit_msg/spell_check.rb +45 -0
- data/lib/overcommit/hook/commit_msg/text_width.rb +56 -0
- data/lib/overcommit/hook/commit_msg/trailing_period.rb +16 -0
- data/lib/overcommit/hook/post_checkout/base.rb +22 -0
- data/lib/overcommit/hook/post_checkout/bower_install.rb +13 -0
- data/lib/overcommit/hook/post_checkout/bundle_install.rb +13 -0
- data/lib/overcommit/hook/post_checkout/composer_install.rb +13 -0
- data/lib/overcommit/hook/post_checkout/index_tags.rb +12 -0
- data/lib/overcommit/hook/post_checkout/npm_install.rb +13 -0
- data/lib/overcommit/hook/post_checkout/submodule_status.rb +12 -0
- data/lib/overcommit/hook/post_checkout/yarn_install.rb +13 -0
- data/lib/overcommit/hook/post_commit/base.rb +12 -0
- data/lib/overcommit/hook/post_commit/bower_install.rb +13 -0
- data/lib/overcommit/hook/post_commit/bundle_install.rb +13 -0
- data/lib/overcommit/hook/post_commit/commitplease.rb +16 -0
- data/lib/overcommit/hook/post_commit/composer_install.rb +13 -0
- data/lib/overcommit/hook/post_commit/git_guilt.rb +43 -0
- data/lib/overcommit/hook/post_commit/index_tags.rb +12 -0
- data/lib/overcommit/hook/post_commit/npm_install.rb +13 -0
- data/lib/overcommit/hook/post_commit/submodule_status.rb +12 -0
- data/lib/overcommit/hook/post_commit/yarn_install.rb +13 -0
- data/lib/overcommit/hook/post_merge/base.rb +12 -0
- data/lib/overcommit/hook/post_merge/bower_install.rb +13 -0
- data/lib/overcommit/hook/post_merge/bundle_install.rb +13 -0
- data/lib/overcommit/hook/post_merge/composer_install.rb +13 -0
- data/lib/overcommit/hook/post_merge/index_tags.rb +12 -0
- data/lib/overcommit/hook/post_merge/npm_install.rb +13 -0
- data/lib/overcommit/hook/post_merge/submodule_status.rb +12 -0
- data/lib/overcommit/hook/post_merge/yarn_install.rb +13 -0
- data/lib/overcommit/hook/post_rewrite/base.rb +12 -0
- data/lib/overcommit/hook/post_rewrite/bower_install.rb +13 -0
- data/lib/overcommit/hook/post_rewrite/bundle_install.rb +13 -0
- data/lib/overcommit/hook/post_rewrite/composer_install.rb +13 -0
- data/lib/overcommit/hook/post_rewrite/index_tags.rb +19 -0
- data/lib/overcommit/hook/post_rewrite/npm_install.rb +13 -0
- data/lib/overcommit/hook/post_rewrite/submodule_status.rb +12 -0
- data/lib/overcommit/hook/post_rewrite/yarn_install.rb +13 -0
- data/lib/overcommit/hook/pre_commit/author_email.rb +26 -0
- data/lib/overcommit/hook/pre_commit/author_name.rb +25 -0
- data/lib/overcommit/hook/pre_commit/base.rb +19 -0
- data/lib/overcommit/hook/pre_commit/berksfile_check.rb +24 -0
- data/lib/overcommit/hook/pre_commit/broken_symlinks.rb +17 -0
- data/lib/overcommit/hook/pre_commit/bundle_audit.rb +24 -0
- data/lib/overcommit/hook/pre_commit/bundle_check.rb +32 -0
- data/lib/overcommit/hook/pre_commit/bundle_outdated.rb +25 -0
- data/lib/overcommit/hook/pre_commit/case_conflicts.rb +27 -0
- data/lib/overcommit/hook/pre_commit/chamber_compare.rb +43 -0
- data/lib/overcommit/hook/pre_commit/chamber_security.rb +15 -0
- data/lib/overcommit/hook/pre_commit/chamber_verification.rb +36 -0
- data/lib/overcommit/hook/pre_commit/code_spell_check.rb +36 -0
- data/lib/overcommit/hook/pre_commit/coffee_lint.rb +35 -0
- data/lib/overcommit/hook/pre_commit/cook_style.rb +35 -0
- data/lib/overcommit/hook/pre_commit/credo.rb +27 -0
- data/lib/overcommit/hook/pre_commit/css_lint.rb +26 -0
- data/lib/overcommit/hook/pre_commit/dogma.rb +33 -0
- data/lib/overcommit/hook/pre_commit/es_lint.rb +38 -0
- data/lib/overcommit/hook/pre_commit/execute_permissions.rb +76 -0
- data/lib/overcommit/hook/pre_commit/fasterer.rb +25 -0
- data/lib/overcommit/hook/pre_commit/file_size.rb +47 -0
- data/lib/overcommit/hook/pre_commit/fix_me.rb +17 -0
- data/lib/overcommit/hook/pre_commit/flay.rb +38 -0
- data/lib/overcommit/hook/pre_commit/foodcritic.rb +149 -0
- data/lib/overcommit/hook/pre_commit/forbidden_branches.rb +26 -0
- data/lib/overcommit/hook/pre_commit/ginkgo_focus.rb +23 -0
- data/lib/overcommit/hook/pre_commit/go_fmt.rb +17 -0
- data/lib/overcommit/hook/pre_commit/go_lint.rb +29 -0
- data/lib/overcommit/hook/pre_commit/go_vet.rb +24 -0
- data/lib/overcommit/hook/pre_commit/golangci_lint.rb +21 -0
- data/lib/overcommit/hook/pre_commit/hadolint.rb +27 -0
- data/lib/overcommit/hook/pre_commit/haml_lint.rb +23 -0
- data/lib/overcommit/hook/pre_commit/hard_tabs.rb +15 -0
- data/lib/overcommit/hook/pre_commit/hlint.rb +34 -0
- data/lib/overcommit/hook/pre_commit/html_hint.rb +23 -0
- data/lib/overcommit/hook/pre_commit/html_tidy.rb +30 -0
- data/lib/overcommit/hook/pre_commit/image_optim.rb +28 -0
- data/lib/overcommit/hook/pre_commit/java_checkstyle.rb +27 -0
- data/lib/overcommit/hook/pre_commit/js_hint.rb +23 -0
- data/lib/overcommit/hook/pre_commit/js_lint.rb +22 -0
- data/lib/overcommit/hook/pre_commit/jscs.rb +27 -0
- data/lib/overcommit/hook/pre_commit/jsl.rb +28 -0
- data/lib/overcommit/hook/pre_commit/json_syntax.rb +21 -0
- data/lib/overcommit/hook/pre_commit/kt_lint.rb +19 -0
- data/lib/overcommit/hook/pre_commit/license_finder.rb +14 -0
- data/lib/overcommit/hook/pre_commit/license_header.rb +48 -0
- data/lib/overcommit/hook/pre_commit/line_endings.rb +77 -0
- data/lib/overcommit/hook/pre_commit/local_paths_in_gemfile.rb +16 -0
- data/lib/overcommit/hook/pre_commit/mdl.rb +29 -0
- data/lib/overcommit/hook/pre_commit/merge_conflicts.rb +16 -0
- data/lib/overcommit/hook/pre_commit/nginx_test.rb +26 -0
- data/lib/overcommit/hook/pre_commit/pep257.rb +23 -0
- data/lib/overcommit/hook/pre_commit/pep8.rb +23 -0
- data/lib/overcommit/hook/pre_commit/php_cs.rb +43 -0
- data/lib/overcommit/hook/pre_commit/php_cs_fixer.rb +57 -0
- data/lib/overcommit/hook/pre_commit/php_lint.rb +44 -0
- data/lib/overcommit/hook/pre_commit/php_stan.rb +30 -0
- data/lib/overcommit/hook/pre_commit/pronto.rb +12 -0
- data/lib/overcommit/hook/pre_commit/puppet_lint.rb +26 -0
- data/lib/overcommit/hook/pre_commit/puppet_metadata_json_lint.rb +29 -0
- data/lib/overcommit/hook/pre_commit/pycodestyle.rb +23 -0
- data/lib/overcommit/hook/pre_commit/pydocstyle.rb +23 -0
- data/lib/overcommit/hook/pre_commit/pyflakes.rb +32 -0
- data/lib/overcommit/hook/pre_commit/pylint.rb +32 -0
- data/lib/overcommit/hook/pre_commit/python_flake8.rb +32 -0
- data/lib/overcommit/hook/pre_commit/rails_best_practices.rb +34 -0
- data/lib/overcommit/hook/pre_commit/rails_schema_up_to_date.rb +58 -0
- data/lib/overcommit/hook/pre_commit/rake_target.rb +12 -0
- data/lib/overcommit/hook/pre_commit/reek.rb +26 -0
- data/lib/overcommit/hook/pre_commit/rst_lint.rb +27 -0
- data/lib/overcommit/hook/pre_commit/rubo_cop.rb +35 -0
- data/lib/overcommit/hook/pre_commit/ruby_lint.rb +23 -0
- data/lib/overcommit/hook/pre_commit/ruby_syntax.rb +27 -0
- data/lib/overcommit/hook/pre_commit/scalariform.rb +22 -0
- data/lib/overcommit/hook/pre_commit/scalastyle.rb +31 -0
- data/lib/overcommit/hook/pre_commit/scss_lint.rb +43 -0
- data/lib/overcommit/hook/pre_commit/semi_standard.rb +23 -0
- data/lib/overcommit/hook/pre_commit/shell_check.rb +23 -0
- data/lib/overcommit/hook/pre_commit/slim_lint.rb +23 -0
- data/lib/overcommit/hook/pre_commit/sqlint.rb +26 -0
- data/lib/overcommit/hook/pre_commit/standard.rb +23 -0
- data/lib/overcommit/hook/pre_commit/stylelint.rb +23 -0
- data/lib/overcommit/hook/pre_commit/swift_lint.rb +19 -0
- data/lib/overcommit/hook/pre_commit/terraform_format.rb +19 -0
- data/lib/overcommit/hook/pre_commit/trailing_whitespace.rb +15 -0
- data/lib/overcommit/hook/pre_commit/travis_lint.rb +15 -0
- data/lib/overcommit/hook/pre_commit/ts_lint.rb +28 -0
- data/lib/overcommit/hook/pre_commit/vint.rb +22 -0
- data/lib/overcommit/hook/pre_commit/w3c_css.rb +67 -0
- data/lib/overcommit/hook/pre_commit/w3c_html.rb +64 -0
- data/lib/overcommit/hook/pre_commit/xml_lint.rb +24 -0
- data/lib/overcommit/hook/pre_commit/xml_syntax.rb +21 -0
- data/lib/overcommit/hook/pre_commit/yaml_lint.rb +18 -0
- data/lib/overcommit/hook/pre_commit/yaml_syntax.rb +20 -0
- data/lib/overcommit/hook/pre_commit/yard_coverage.rb +90 -0
- data/lib/overcommit/hook/pre_commit/yarn_check.rb +37 -0
- data/lib/overcommit/hook/pre_push/base.rb +33 -0
- data/lib/overcommit/hook/pre_push/brakeman.rb +15 -0
- data/lib/overcommit/hook/pre_push/cargo_test.rb +12 -0
- data/lib/overcommit/hook/pre_push/go_test.rb +14 -0
- data/lib/overcommit/hook/pre_push/golangci_lint.rb +16 -0
- data/lib/overcommit/hook/pre_push/minitest.rb +20 -0
- data/lib/overcommit/hook/pre_push/php_unit.rb +16 -0
- data/lib/overcommit/hook/pre_push/pronto.rb +12 -0
- data/lib/overcommit/hook/pre_push/protected_branches.rb +74 -0
- data/lib/overcommit/hook/pre_push/pytest.rb +16 -0
- data/lib/overcommit/hook/pre_push/python_nose.rb +16 -0
- data/lib/overcommit/hook/pre_push/r_spec.rb +16 -0
- data/lib/overcommit/hook/pre_push/rake_target.rb +12 -0
- data/lib/overcommit/hook/pre_push/test_unit.rb +16 -0
- data/lib/overcommit/hook/pre_rebase/base.rb +14 -0
- data/lib/overcommit/hook/pre_rebase/merged_commits.rb +31 -0
- data/lib/overcommit/hook/prepare_commit_msg/base.rb +25 -0
- data/lib/overcommit/hook/prepare_commit_msg/replace_branch.rb +57 -0
- data/lib/overcommit/hook/shared/bower_install.rb +15 -0
- data/lib/overcommit/hook/shared/bundle_install.rb +15 -0
- data/lib/overcommit/hook/shared/composer_install.rb +15 -0
- data/lib/overcommit/hook/shared/index_tags.rb +14 -0
- data/lib/overcommit/hook/shared/npm_install.rb +15 -0
- data/lib/overcommit/hook/shared/pronto.rb +21 -0
- data/lib/overcommit/hook/shared/rake_target.rb +26 -0
- data/lib/overcommit/hook/shared/submodule_status.rb +32 -0
- data/lib/overcommit/hook/shared/yarn_install.rb +15 -0
- data/lib/overcommit/hook_context.rb +19 -0
- data/lib/overcommit/hook_context/base.rb +139 -0
- data/lib/overcommit/hook_context/commit_msg.rb +48 -0
- data/lib/overcommit/hook_context/post_checkout.rb +36 -0
- data/lib/overcommit/hook_context/post_commit.rb +33 -0
- data/lib/overcommit/hook_context/post_merge.rb +37 -0
- data/lib/overcommit/hook_context/post_rewrite.rb +49 -0
- data/lib/overcommit/hook_context/pre_commit.rb +212 -0
- data/lib/overcommit/hook_context/pre_push.rb +89 -0
- data/lib/overcommit/hook_context/pre_rebase.rb +38 -0
- data/lib/overcommit/hook_context/prepare_commit_msg.rb +34 -0
- data/lib/overcommit/hook_context/run_all.rb +48 -0
- data/lib/overcommit/hook_loader/base.rb +48 -0
- data/lib/overcommit/hook_loader/built_in_hook_loader.rb +14 -0
- data/lib/overcommit/hook_loader/plugin_hook_loader.rb +102 -0
- data/lib/overcommit/hook_runner.rb +219 -0
- data/lib/overcommit/hook_signer.rb +123 -0
- data/lib/overcommit/installer.rb +193 -0
- data/lib/overcommit/interrupt_handler.rb +91 -0
- data/lib/overcommit/logger.rb +92 -0
- data/lib/overcommit/message_processor.rb +148 -0
- data/lib/overcommit/os.rb +38 -0
- data/lib/overcommit/printer.rb +145 -0
- data/lib/overcommit/subprocess.rb +98 -0
- data/lib/overcommit/utils.rb +309 -0
- data/lib/overcommit/utils/file_utils.rb +71 -0
- data/lib/overcommit/utils/messages_utils.rb +77 -0
- data/lib/overcommit/version.rb +6 -0
- data/libexec/gerrit-change-id +174 -0
- data/libexec/index-tags +17 -0
- data/template-dir/hooks/commit-msg +116 -0
- data/template-dir/hooks/overcommit-hook +116 -0
- data/template-dir/hooks/post-checkout +116 -0
- data/template-dir/hooks/post-commit +116 -0
- data/template-dir/hooks/post-merge +116 -0
- data/template-dir/hooks/post-rewrite +116 -0
- data/template-dir/hooks/pre-commit +116 -0
- data/template-dir/hooks/pre-push +116 -0
- data/template-dir/hooks/pre-rebase +116 -0
- data/template-dir/hooks/prepare-commit-msg +116 -0
- 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
|