overcommit 0.32.0 → 0.33.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0c2c570d206163b748a1aefa226cacfbe1987a6
4
- data.tar.gz: fd391b54a75ca207031562fc896d2dfa57494088
3
+ metadata.gz: 82d13816e551875c9d755901cb847f586459cefd
4
+ data.tar.gz: 582491d7682c80f69a4b931a9fb03bc3e0a63ce9
5
5
  SHA512:
6
- metadata.gz: df5aecb87481a132a0fc6b0d5ee0ac651a9ca74ba962a0563fc66b5a5583d19aad33293e25bd71626aecbdfe186d7af0e2be1bbda440c8ec2ffc5b5c4507dc8e
7
- data.tar.gz: d2eb883b0d1bb0bfd0a4b970150e466eb5a5fe5631d49d876b8c9b751463120efb99a9c788c2079b6907679dbc778b6ab780fed382c14d510df702ee406988da
6
+ metadata.gz: 2affc1f9a55e9db9fd9d5f260ffa347715f4bf9694f244707a3503f0d5eefe1ab8036f27053873ef523a1190e49566bf5bb0b3a7bfef710274501ffe06b7e52a
7
+ data.tar.gz: c11fc79fcc65a689c852f7fb2428131cb51b6dcef877dbf0ea8e4314bd603a89ab22b10d08dab35223e0c525fe630bf0c88fefef7d4d143e846c47d4a38ba531
data/bin/overcommit CHANGED
@@ -1,6 +1,44 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'overcommit/cli'
3
+ # Check if Overcommit should invoke a Bundler context for loading gems
4
+ require 'yaml'
5
+ # rubocop:disable Style/RescueModifier
6
+ if gemfile = YAML.load_file('.overcommit.yml')['gemfile'] rescue nil
7
+ ENV['BUNDLE_GEMFILE'] = gemfile
8
+ require 'bundler'
9
+
10
+ begin
11
+ # We need to temporarily silence STDERR to remove annoying Gem specification
12
+ # warnings that ultimately don't matter, e.g.
13
+ # https://github.com/rubygems/rubygems/issues/1070
14
+ old_stderr = $stderr
15
+ begin
16
+ $stderr = File.new(File::NULL, 'w')
17
+ Bundler.setup
18
+ ensure
19
+ $stderr = old_stderr
20
+ end
21
+ rescue Bundler::BundlerError => ex
22
+ puts "Problem loading '#{gemfile}': #{ex.message}"
23
+ puts "Try running:\nbundle install --gemfile=#{gemfile}" if ex.is_a?(Bundler::GemNotFound)
24
+ exit 78 # EX_CONFIG
25
+ end
26
+ end
27
+ # rubocop:enable Style/RescueModifier
28
+
29
+ begin
30
+ require 'overcommit/cli'
31
+ rescue LoadError
32
+ if gemfile
33
+ puts 'You have specified the `gemfile` option in your Overcommit ' \
34
+ 'configuration but have not added the `overcommit` gem to ' \
35
+ "#{gemfile}."
36
+ else
37
+ raise
38
+ end
39
+
40
+ exit 64 # EX_USAGE
41
+ end
4
42
 
5
43
  logger = Overcommit::Logger.new(STDOUT)
6
44
 
data/config/default.yml CHANGED
@@ -39,6 +39,10 @@ gemfile: false
39
39
  # to the root of the repository.
40
40
  plugin_directory: '.git-hooks'
41
41
 
42
+ # Whether to hide hook output by default. This results in completely silent hook
43
+ # runs except in the case of warning or failure.
44
+ quiet: false
45
+
42
46
  # Number of hooks that can be run concurrently. Typically this won't need to be
43
47
  # adjusted, but if you know that some of your hooks themselves use multiple
44
48
  # processors you can lower this value accordingly. You can define
@@ -197,7 +197,7 @@ module Overcommit
197
197
  context = Overcommit::HookContext.create('run-all', config, @arguments, empty_stdin)
198
198
  config.apply_environment!(context, ENV)
199
199
 
200
- printer = Overcommit::Printer.new(log, context)
200
+ printer = Overcommit::Printer.new(config, log, context)
201
201
  runner = Overcommit::HookRunner.new(config, log, context, printer)
202
202
 
203
203
  status = runner.run
@@ -2,14 +2,20 @@ module Overcommit::Hook::PreCommit
2
2
  # Checks the format of an author's email address.
3
3
  class AuthorEmail < Base
4
4
  def run
5
- result = execute(%w[git config --get user.email])
6
- email = result.stdout.chomp
5
+ email =
6
+ if ENV.key?('GIT_AUTHOR_EMAIL')
7
+ ENV['GIT_AUTHOR_EMAIL']
8
+ else
9
+ result = execute(%w[git config --get user.email])
10
+ result.stdout.chomp
11
+ end
7
12
 
8
13
  unless email =~ /#{config['pattern']}/
9
14
  return :fail,
10
15
  "Author has an invalid email address: '#{email}'\n" \
11
16
  'Set your email with ' \
12
- '`git config --global user.email your_email@example.com`'
17
+ '`git config --global user.email your_email@example.com` ' \
18
+ 'or via the GIT_AUTHOR_EMAIL environment variable'
13
19
  end
14
20
 
15
21
  :pass
@@ -2,13 +2,19 @@ module Overcommit::Hook::PreCommit
2
2
  # Ensures that a commit author has a name with at least first and last names.
3
3
  class AuthorName < Base
4
4
  def run
5
- result = execute(%w[git config --get user.name])
6
- name = result.stdout.chomp
5
+ name =
6
+ if ENV.key?('GIT_AUTHOR_NAME')
7
+ ENV['GIT_AUTHOR_NAME']
8
+ else
9
+ result = execute(%w[git config --get user.name])
10
+ result.stdout.chomp
11
+ end
7
12
 
8
13
  unless name.split(' ').count >= 2
9
14
  return :fail,
10
15
  "Author must have at least first and last name, but was: #{name}.\n" \
11
- 'Set your name with `git config --global user.name "Your Name"`'
16
+ 'Set your name with `git config --global user.name "Your Name"` ' \
17
+ 'or via the GIT_AUTHOR_NAME environment variable'
12
18
  end
13
19
 
14
20
  :pass
@@ -3,7 +3,7 @@ module Overcommit::Hook::PreCommit
3
3
  #
4
4
  # @see http://checkstyle.sourceforge.net/
5
5
  class JavaCheckstyle < Base
6
- MESSAGE_REGEX = /^(?<file>(?:\w:)?[^:]+):(?<line>\d+)/
6
+ MESSAGE_REGEX = /^(\[[^\]]+\]\s+)?(?<file>(?:\w:)?[^:]+):(?<line>\d+)/
7
7
 
8
8
  def run
9
9
  result = execute(command, args: applicable_files)
@@ -79,7 +79,7 @@ module Overcommit::HookLoader
79
79
  # Implement a simple class that executes the command and returns pass/fail
80
80
  # based on the exit status
81
81
  hook_class = Class.new(hook_base) do
82
- def run # rubocop:disable Lint/NestedMethodDefinition
82
+ def run
83
83
  result = @context.execute_hook(command)
84
84
 
85
85
  if result.success?
@@ -8,7 +8,8 @@ module Overcommit
8
8
  class Printer
9
9
  attr_reader :log
10
10
 
11
- def initialize(logger, context)
11
+ def initialize(config, logger, context)
12
+ @config = config
12
13
  @log = logger
13
14
  @context = context
14
15
  @lock = Monitor.new # Need to use monitor so we can have re-entrant locks
@@ -17,7 +18,7 @@ module Overcommit
17
18
 
18
19
  # Executed at the very beginning of running the collection of hooks.
19
20
  def start_run
20
- log.bold "Running #{hook_script_name} hooks"
21
+ log.bold "Running #{hook_script_name} hooks" unless @config['quiet']
21
22
  end
22
23
 
23
24
  def nothing_to_run
@@ -36,7 +37,7 @@ module Overcommit
36
37
  def end_hook(hook, status, output)
37
38
  # Want to print the header for quiet hooks only if the result wasn't good
38
39
  # so that the user knows what failed
39
- print_header(hook) if !hook.quiet? || status != :pass
40
+ print_header(hook) if (!hook.quiet? && !@config['quiet']) || status != :pass
40
41
 
41
42
  print_result(hook, status, output)
42
43
  end
@@ -69,9 +70,11 @@ module Overcommit
69
70
 
70
71
  # Executed when no hooks failed by the end of the run.
71
72
  def run_succeeded
72
- log.newline
73
- log.success "✓ All #{hook_script_name} hooks passed"
74
- log.newline
73
+ unless @config['quiet']
74
+ log.newline
75
+ log.success "✓ All #{hook_script_name} hooks passed"
76
+ log.newline
77
+ end
75
78
  end
76
79
 
77
80
  private
@@ -83,10 +86,10 @@ module Overcommit
83
86
  log.partial hook_name
84
87
  end
85
88
 
86
- def print_result(hook, status, output)
89
+ def print_result(hook, status, output) # rubocop:disable Metrics/CyclomaticComplexity
87
90
  case status
88
91
  when :pass
89
- log.success 'OK' unless hook.quiet?
92
+ log.success 'OK' unless @config['quiet'] || hook.quiet?
90
93
  when :warn
91
94
  log.warning 'WARNING'
92
95
  print_report(output, :bold_warning)
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  module Overcommit
5
- VERSION = '0.32.0'.freeze
5
+ VERSION = '0.33.0'.freeze
6
6
  end
@@ -73,7 +73,7 @@ begin
73
73
  context = Overcommit::HookContext.create(hook_type, config, ARGV, STDIN)
74
74
  config.apply_environment!(context, ENV)
75
75
 
76
- printer = Overcommit::Printer.new(logger, context)
76
+ printer = Overcommit::Printer.new(config, logger, context)
77
77
  runner = Overcommit::HookRunner.new(config, logger, context, printer)
78
78
 
79
79
  status = runner.run
@@ -73,7 +73,7 @@ begin
73
73
  context = Overcommit::HookContext.create(hook_type, config, ARGV, STDIN)
74
74
  config.apply_environment!(context, ENV)
75
75
 
76
- printer = Overcommit::Printer.new(logger, context)
76
+ printer = Overcommit::Printer.new(config, logger, context)
77
77
  runner = Overcommit::HookRunner.new(config, logger, context, printer)
78
78
 
79
79
  status = runner.run
@@ -73,7 +73,7 @@ begin
73
73
  context = Overcommit::HookContext.create(hook_type, config, ARGV, STDIN)
74
74
  config.apply_environment!(context, ENV)
75
75
 
76
- printer = Overcommit::Printer.new(logger, context)
76
+ printer = Overcommit::Printer.new(config, logger, context)
77
77
  runner = Overcommit::HookRunner.new(config, logger, context, printer)
78
78
 
79
79
  status = runner.run
@@ -73,7 +73,7 @@ begin
73
73
  context = Overcommit::HookContext.create(hook_type, config, ARGV, STDIN)
74
74
  config.apply_environment!(context, ENV)
75
75
 
76
- printer = Overcommit::Printer.new(logger, context)
76
+ printer = Overcommit::Printer.new(config, logger, context)
77
77
  runner = Overcommit::HookRunner.new(config, logger, context, printer)
78
78
 
79
79
  status = runner.run
@@ -73,7 +73,7 @@ begin
73
73
  context = Overcommit::HookContext.create(hook_type, config, ARGV, STDIN)
74
74
  config.apply_environment!(context, ENV)
75
75
 
76
- printer = Overcommit::Printer.new(logger, context)
76
+ printer = Overcommit::Printer.new(config, logger, context)
77
77
  runner = Overcommit::HookRunner.new(config, logger, context, printer)
78
78
 
79
79
  status = runner.run
@@ -73,7 +73,7 @@ begin
73
73
  context = Overcommit::HookContext.create(hook_type, config, ARGV, STDIN)
74
74
  config.apply_environment!(context, ENV)
75
75
 
76
- printer = Overcommit::Printer.new(logger, context)
76
+ printer = Overcommit::Printer.new(config, logger, context)
77
77
  runner = Overcommit::HookRunner.new(config, logger, context, printer)
78
78
 
79
79
  status = runner.run
@@ -73,7 +73,7 @@ begin
73
73
  context = Overcommit::HookContext.create(hook_type, config, ARGV, STDIN)
74
74
  config.apply_environment!(context, ENV)
75
75
 
76
- printer = Overcommit::Printer.new(logger, context)
76
+ printer = Overcommit::Printer.new(config, logger, context)
77
77
  runner = Overcommit::HookRunner.new(config, logger, context, printer)
78
78
 
79
79
  status = runner.run
@@ -73,7 +73,7 @@ begin
73
73
  context = Overcommit::HookContext.create(hook_type, config, ARGV, STDIN)
74
74
  config.apply_environment!(context, ENV)
75
75
 
76
- printer = Overcommit::Printer.new(logger, context)
76
+ printer = Overcommit::Printer.new(config, logger, context)
77
77
  runner = Overcommit::HookRunner.new(config, logger, context, printer)
78
78
 
79
79
  status = runner.run
@@ -73,7 +73,7 @@ begin
73
73
  context = Overcommit::HookContext.create(hook_type, config, ARGV, STDIN)
74
74
  config.apply_environment!(context, ENV)
75
75
 
76
- printer = Overcommit::Printer.new(logger, context)
76
+ printer = Overcommit::Printer.new(config, logger, context)
77
77
  runner = Overcommit::HookRunner.new(config, logger, context, printer)
78
78
 
79
79
  status = runner.run
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.32.0
4
+ version: 0.33.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-02-21 00:00:00.000000000 Z
12
+ date: 2016-04-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: childprocess
@@ -39,48 +39,6 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '1.4'
42
- - !ruby/object:Gem::Dependency
43
- name: rake
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: '10.4'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: '10.4'
56
- - !ruby/object:Gem::Dependency
57
- name: rspec
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '3.0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '3.0'
70
- - !ruby/object:Gem::Dependency
71
- name: travis
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '1.7'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '1.7'
84
42
  description: Utility to install, configure, and extend Git hooks
85
43
  email:
86
44
  - eng@brigade.com