overcommit 0.35.0 → 0.36.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.
- checksums.yaml +4 -4
 - data/config/default.yml +22 -0
 - data/lib/overcommit/configuration_validator.rb +38 -0
 - data/lib/overcommit/hook/pre_commit/fasterer.rb +23 -0
 - data/lib/overcommit/hook/pre_commit/ts_lint.rb +18 -0
 - data/lib/overcommit/hook/pre_push/brakeman.rb +13 -0
 - data/lib/overcommit/version.rb +1 -1
 - metadata +5 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 3b67aff142df04c21f3edc1e45cb5e8e71b0f613
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 148dede395ec550657a9d3b7c4bb9fa661784b7e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d9ec483cba901e73e9346682f6597f9d75dfc793bbabfc30a706cb04a633e2f33e20502d936478d34b834a53ea300402458adecee606d261dd55bf61838bc60f
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 91ca7dd2c169bfc3ee5f464094d5decd186324bd765b7d7fd7a04f91a0335267eec065d7f21b1cf3756f64ff537d10c2dd26515d42dd9c027d77ef355ad8cf54
         
     | 
    
        data/config/default.yml
    CHANGED
    
    | 
         @@ -247,6 +247,13 @@ PreCommit: 
     | 
|
| 
       247 
247 
     | 
    
         
             
                description: 'Check for file execute permissions'
         
     | 
| 
       248 
248 
     | 
    
         
             
                quiet: true
         
     | 
| 
       249 
249 
     | 
    
         | 
| 
      
 250 
     | 
    
         
            +
              Fasterer:
         
     | 
| 
      
 251 
     | 
    
         
            +
                enabled: false
         
     | 
| 
      
 252 
     | 
    
         
            +
                description: 'Analyzing for potential speed improvements'
         
     | 
| 
      
 253 
     | 
    
         
            +
                required_executable: 'fasterer'
         
     | 
| 
      
 254 
     | 
    
         
            +
                install_command: 'gem install fasterer'
         
     | 
| 
      
 255 
     | 
    
         
            +
                include: '**/*.rb'
         
     | 
| 
      
 256 
     | 
    
         
            +
             
     | 
| 
       250 
257 
     | 
    
         
             
              ForbiddenBranches:
         
     | 
| 
       251 
258 
     | 
    
         
             
                enabled: false
         
     | 
| 
       252 
259 
     | 
    
         
             
                description: 'Check for commit to forbidden branch'
         
     | 
| 
         @@ -549,6 +556,14 @@ PreCommit: 
     | 
|
| 
       549 
556 
     | 
    
         
             
                install_command: 'npm install -g standard'
         
     | 
| 
       550 
557 
     | 
    
         
             
                include: '**/*.js'
         
     | 
| 
       551 
558 
     | 
    
         | 
| 
      
 559 
     | 
    
         
            +
              TsLint:
         
     | 
| 
      
 560 
     | 
    
         
            +
                  enabled: false
         
     | 
| 
      
 561 
     | 
    
         
            +
                  description: 'Analyze with TSLint'
         
     | 
| 
      
 562 
     | 
    
         
            +
                  required_executable: 'tslint'
         
     | 
| 
      
 563 
     | 
    
         
            +
                  install_command: 'npm install -g tslint typescript'
         
     | 
| 
      
 564 
     | 
    
         
            +
                  flags: ['--t=prose']
         
     | 
| 
      
 565 
     | 
    
         
            +
                  include: '**/*.ts'
         
     | 
| 
      
 566 
     | 
    
         
            +
             
     | 
| 
       552 
567 
     | 
    
         
             
              TrailingWhitespace:
         
     | 
| 
       553 
568 
     | 
    
         
             
                enabled: false
         
     | 
| 
       554 
569 
     | 
    
         
             
                description: 'Check for trailing whitespace'
         
     | 
| 
         @@ -855,6 +870,13 @@ PrePush: 
     | 
|
| 
       855 
870 
     | 
    
         
             
                description: 'Run Test::Unit test suite'
         
     | 
| 
       856 
871 
     | 
    
         
             
                command: ['ruby', '-Ilib:test', '-rtest/unit', "-e 'exit! Test::Unit::AutoRunner.run'"]
         
     | 
| 
       857 
872 
     | 
    
         | 
| 
      
 873 
     | 
    
         
            +
              Brakeman:
         
     | 
| 
      
 874 
     | 
    
         
            +
                enabled: false
         
     | 
| 
      
 875 
     | 
    
         
            +
                description: 'Check for security vulnerabilities'
         
     | 
| 
      
 876 
     | 
    
         
            +
                required_executable: 'brakeman'
         
     | 
| 
      
 877 
     | 
    
         
            +
                flags: ['--exit-on-warn', '--quiet', '--summary']
         
     | 
| 
      
 878 
     | 
    
         
            +
                install_command: 'gem install brakeman'
         
     | 
| 
      
 879 
     | 
    
         
            +
             
     | 
| 
       858 
880 
     | 
    
         
             
            # Hooks that run during `git rebase`, before any commits are rebased.
         
     | 
| 
       859 
881 
     | 
    
         
             
            # If a hook fails, the rebase is aborted.
         
     | 
| 
       860 
882 
     | 
    
         
             
            PreRebase:
         
     | 
| 
         @@ -1,3 +1,4 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # rubocop:disable Metrics/ClassLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength, Metrics/LineLength
         
     | 
| 
       1 
2 
     | 
    
         
             
            module Overcommit
         
     | 
| 
       2 
3 
     | 
    
         
             
              # Validates and normalizes a configuration.
         
     | 
| 
       3 
4 
     | 
    
         
             
              class ConfigurationValidator
         
     | 
| 
         @@ -16,6 +17,7 @@ module Overcommit 
     | 
|
| 
       16 
17 
     | 
    
         
             
                  hash = convert_nils_to_empty_hashes(hash)
         
     | 
| 
       17 
18 
     | 
    
         
             
                  ensure_hook_type_sections_exist(hash)
         
     | 
| 
       18 
19 
     | 
    
         
             
                  check_hook_name_format(hash)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  check_hook_env(hash)
         
     | 
| 
       19 
21 
     | 
    
         
             
                  check_for_missing_enabled_option(hash) unless @options[:default]
         
     | 
| 
       20 
22 
     | 
    
         
             
                  check_for_too_many_processors(config, hash)
         
     | 
| 
       21 
23 
     | 
    
         
             
                  check_for_verify_plugin_signatures_option(hash)
         
     | 
| 
         @@ -51,6 +53,42 @@ module Overcommit 
     | 
|
| 
       51 
53 
     | 
    
         
             
                  end
         
     | 
| 
       52 
54 
     | 
    
         
             
                end
         
     | 
| 
       53 
55 
     | 
    
         | 
| 
      
 56 
     | 
    
         
            +
                def check_hook_env(hash)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  errors = []
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                  Overcommit::Utils.supported_hook_type_classes.each do |hook_type|
         
     | 
| 
      
 60 
     | 
    
         
            +
                    hash.fetch(hook_type, {}).each do |hook_name, hook_config|
         
     | 
| 
      
 61 
     | 
    
         
            +
                      hook_env = hook_config.fetch('env', {})
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                      unless hook_env.is_a?(Hash)
         
     | 
| 
      
 64 
     | 
    
         
            +
                        errors << "#{hook_type}::#{hook_name} has an invalid `env` specified: " \
         
     | 
| 
      
 65 
     | 
    
         
            +
                                  'must be a hash of environment variable name to string value.'
         
     | 
| 
      
 66 
     | 
    
         
            +
                        next
         
     | 
| 
      
 67 
     | 
    
         
            +
                      end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                      hook_env.each do |var_name, var_value|
         
     | 
| 
      
 70 
     | 
    
         
            +
                        if var_name.include?('=')
         
     | 
| 
      
 71 
     | 
    
         
            +
                          errors << "#{hook_type}::#{hook_name} has an invalid `env` specified: " \
         
     | 
| 
      
 72 
     | 
    
         
            +
                                    "variable name `#{var_name}` cannot contain `=`."
         
     | 
| 
      
 73 
     | 
    
         
            +
                        end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                        unless var_value.nil? || var_value.is_a?(String)
         
     | 
| 
      
 76 
     | 
    
         
            +
                          errors << "#{hook_type}::#{hook_name} has an invalid `env` specified: " \
         
     | 
| 
      
 77 
     | 
    
         
            +
                                    "value of `#{var_name}` must be a string or `nil`, but was " \
         
     | 
| 
      
 78 
     | 
    
         
            +
                                    "#{var_value.inspect} (#{var_value.class})"
         
     | 
| 
      
 79 
     | 
    
         
            +
                        end
         
     | 
| 
      
 80 
     | 
    
         
            +
                      end
         
     | 
| 
      
 81 
     | 
    
         
            +
                    end
         
     | 
| 
      
 82 
     | 
    
         
            +
                  end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                  if errors.any?
         
     | 
| 
      
 85 
     | 
    
         
            +
                    @log.error errors.join("\n") if @log
         
     | 
| 
      
 86 
     | 
    
         
            +
                    @log.newline if @log
         
     | 
| 
      
 87 
     | 
    
         
            +
                    raise Overcommit::Exceptions::ConfigurationError,
         
     | 
| 
      
 88 
     | 
    
         
            +
                          'One or more hooks had an invalid `env` configuration option'
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
       54 
92 
     | 
    
         
             
                # Prints an error message and raises an exception if a hook has an
         
     | 
| 
       55 
93 
     | 
    
         
             
                # invalid name, since this can result in strange errors elsewhere.
         
     | 
| 
       56 
94 
     | 
    
         
             
                def check_hook_name_format(hash)
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Overcommit::Hook::PreCommit
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Runs `fasterer` against any modified Ruby files.
         
     | 
| 
      
 3 
     | 
    
         
            +
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              # @see https://github.com/DamirSvrtan/fasterer
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Fasterer < Base
         
     | 
| 
      
 6 
     | 
    
         
            +
                def run
         
     | 
| 
      
 7 
     | 
    
         
            +
                  result = execute(command, args: applicable_files)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  output = result.stdout
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  if extract_offense_num(output) == 0
         
     | 
| 
      
 11 
     | 
    
         
            +
                    :pass
         
     | 
| 
      
 12 
     | 
    
         
            +
                  else
         
     | 
| 
      
 13 
     | 
    
         
            +
                    return [:warn, output]
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                private
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def extract_offense_num(raw_output)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  raw_output.scan(/(\d+) offense detected/).flatten.map(&:to_i).inject(0, :+)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Overcommit::Hook::PreCommit
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Runs `tslint` against modified TypeScript files.
         
     | 
| 
      
 3 
     | 
    
         
            +
              # @see http://palantir.github.io/tslint/
         
     | 
| 
      
 4 
     | 
    
         
            +
              class TsLint < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                def run
         
     | 
| 
      
 6 
     | 
    
         
            +
                  result = execute(command, args: applicable_files)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  output = result.stdout.chomp
         
     | 
| 
      
 8 
     | 
    
         
            +
                  return :pass if result.success? && output.empty?
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  # example message:
         
     | 
| 
      
 11 
     | 
    
         
            +
                  # src/file/anotherfile.ts[298, 1]: exceeds maximum line length of 140
         
     | 
| 
      
 12 
     | 
    
         
            +
                  extract_messages(
         
     | 
| 
      
 13 
     | 
    
         
            +
                      output.split("\n"),
         
     | 
| 
      
 14 
     | 
    
         
            +
                      /^(?<file>.+?(?=\[))[^\d]+(?<line>\d+).*?/
         
     | 
| 
      
 15 
     | 
    
         
            +
                  )
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Overcommit::Hook::PrePush
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Runs `brakeman` whenever Ruby/Rails files change.
         
     | 
| 
      
 3 
     | 
    
         
            +
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              # @see http://brakemanscanner.org/
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Brakeman < Base
         
     | 
| 
      
 6 
     | 
    
         
            +
                def run
         
     | 
| 
      
 7 
     | 
    
         
            +
                  result = execute(command)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  return :pass if result.success?
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  [:fail, result.stdout]
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/overcommit/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: overcommit
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.36.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Brigade Engineering
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2016-08- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2016-08-31 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: childprocess
         
     | 
| 
         @@ -116,6 +116,7 @@ files: 
     | 
|
| 
       116 
116 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/dogma.rb
         
     | 
| 
       117 
117 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/es_lint.rb
         
     | 
| 
       118 
118 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/execute_permissions.rb
         
     | 
| 
      
 119 
     | 
    
         
            +
            - lib/overcommit/hook/pre_commit/fasterer.rb
         
     | 
| 
       119 
120 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/forbidden_branches.rb
         
     | 
| 
       120 
121 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/go_lint.rb
         
     | 
| 
       121 
122 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/go_vet.rb
         
     | 
| 
         @@ -156,6 +157,7 @@ files: 
     | 
|
| 
       156 
157 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/standard.rb
         
     | 
| 
       157 
158 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/trailing_whitespace.rb
         
     | 
| 
       158 
159 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/travis_lint.rb
         
     | 
| 
      
 160 
     | 
    
         
            +
            - lib/overcommit/hook/pre_commit/ts_lint.rb
         
     | 
| 
       159 
161 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/vint.rb
         
     | 
| 
       160 
162 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/w3c_css.rb
         
     | 
| 
       161 
163 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/w3c_html.rb
         
     | 
| 
         @@ -163,6 +165,7 @@ files: 
     | 
|
| 
       163 
165 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/xml_syntax.rb
         
     | 
| 
       164 
166 
     | 
    
         
             
            - lib/overcommit/hook/pre_commit/yaml_syntax.rb
         
     | 
| 
       165 
167 
     | 
    
         
             
            - lib/overcommit/hook/pre_push/base.rb
         
     | 
| 
      
 168 
     | 
    
         
            +
            - lib/overcommit/hook/pre_push/brakeman.rb
         
     | 
| 
       166 
169 
     | 
    
         
             
            - lib/overcommit/hook/pre_push/minitest.rb
         
     | 
| 
       167 
170 
     | 
    
         
             
            - lib/overcommit/hook/pre_push/protected_branches.rb
         
     | 
| 
       168 
171 
     | 
    
         
             
            - lib/overcommit/hook/pre_push/r_spec.rb
         
     |