overcommit 0.1.3 → 0.1.4
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/lib/overcommit.rb +1 -1
- data/lib/overcommit/cli.rb +12 -9
- data/lib/overcommit/configuration.rb +1 -1
- data/lib/overcommit/git_hook.rb +12 -7
- data/lib/overcommit/installer.rb +6 -2
- data/lib/overcommit/logger.rb +36 -0
- data/lib/overcommit/reporter.rb +20 -17
- data/lib/overcommit/utils.rb +7 -3
- data/lib/overcommit/version.rb +1 -1
- metadata +2 -2
- data/lib/overcommit/console_methods.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c7ae9be51eb3b0d57670dc28a29c359ec89c040
|
4
|
+
data.tar.gz: 6830fbb57c870026962e5ea7b98b74a2ae69ca78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faa4abb76a1d4b681b29bcdf0bfa84d9d55498fd8e472bc654ffd4ce7dd3edbcd49da126f1299ca49efc519f7310b023afb7229c2d03a9ca0b2535eb92ee0f15
|
7
|
+
data.tar.gz: 817e12dcedd4b6a624fb9eb5203443fd81279d130f37a65613e30126e71d8337a51f65d6e85a3f930a4d5aa7c13d13c940053851da47793d4bfa536f84021558
|
data/lib/overcommit.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'overcommit/configuration'
|
2
|
-
require 'overcommit/console_methods'
|
3
2
|
require 'overcommit/errors'
|
4
3
|
require 'overcommit/git_hook'
|
5
4
|
require 'overcommit/hook_specific_check'
|
6
5
|
require 'overcommit/installer'
|
6
|
+
require 'overcommit/logger'
|
7
7
|
require 'overcommit/reporter'
|
8
8
|
require 'overcommit/utils'
|
9
9
|
require 'overcommit/version'
|
data/lib/overcommit/cli.rb
CHANGED
@@ -2,7 +2,6 @@ require 'optparse'
|
|
2
2
|
|
3
3
|
module Overcommit
|
4
4
|
class CLI
|
5
|
-
include ConsoleMethods
|
6
5
|
attr_reader :options
|
7
6
|
|
8
7
|
def initialize(arguments = [])
|
@@ -19,14 +18,14 @@ module Overcommit
|
|
19
18
|
end
|
20
19
|
|
21
20
|
opts.on_tail('-v', '--version', 'Show version') do
|
22
|
-
|
21
|
+
log.log VERSION
|
23
22
|
exit 0
|
24
23
|
end
|
25
24
|
|
26
25
|
opts.on('-l', '--list-templates', 'List built-in templates') do
|
27
26
|
Overcommit.config.templates.each_pair do |name, configuration|
|
28
27
|
bold name
|
29
|
-
|
28
|
+
log.log YAML.dump(configuration), ''
|
30
29
|
end
|
31
30
|
exit 0
|
32
31
|
end
|
@@ -80,8 +79,8 @@ module Overcommit
|
|
80
79
|
|
81
80
|
def run
|
82
81
|
if @options[:targets].nil? || @options[:targets].empty?
|
83
|
-
warning 'You must supply at least one directory'
|
84
|
-
|
82
|
+
log.warning 'You must supply at least one directory'
|
83
|
+
log.log @parser.help
|
85
84
|
exit 2
|
86
85
|
end
|
87
86
|
|
@@ -89,11 +88,11 @@ module Overcommit
|
|
89
88
|
begin
|
90
89
|
Installer.new(@options, target).run
|
91
90
|
rescue NotAGitRepoError => e
|
92
|
-
warning "Skipping #{target}: #{e}"
|
91
|
+
log.warning "Skipping #{target}: #{e}"
|
93
92
|
end
|
94
93
|
end
|
95
94
|
|
96
|
-
success "#{@options[:uninstall] ? 'Removal' : 'Installation'} complete"
|
95
|
+
log.success "#{@options[:uninstall] ? 'Removal' : 'Installation'} complete"
|
97
96
|
|
98
97
|
rescue ArgumentError => ex
|
99
98
|
error "Installation failed: #{ex}"
|
@@ -102,9 +101,13 @@ module Overcommit
|
|
102
101
|
|
103
102
|
private
|
104
103
|
|
104
|
+
def log
|
105
|
+
Logger.instance
|
106
|
+
end
|
107
|
+
|
105
108
|
def print_help(message, ex = nil)
|
106
|
-
error ex.to_s + "\n" if ex
|
107
|
-
|
109
|
+
log.error ex.to_s + "\n" if ex
|
110
|
+
log.log message
|
108
111
|
exit 0
|
109
112
|
end
|
110
113
|
end
|
@@ -22,7 +22,7 @@ module Overcommit
|
|
22
22
|
# Given the current configuration, return a set of paths which should be
|
23
23
|
# loaded as plugins (`require`d)
|
24
24
|
def desired_plugins
|
25
|
-
excludes = repo_settings['excludes']
|
25
|
+
excludes = repo_settings['excludes'] || {}
|
26
26
|
|
27
27
|
plugin_directories.map do |dir|
|
28
28
|
Dir[File.join(dir, Utils.hook_name, '*.rb')].map do |plugin|
|
data/lib/overcommit/git_hook.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
module Overcommit
|
2
2
|
module GitHook
|
3
3
|
class BaseHook
|
4
|
-
include ConsoleMethods
|
5
|
-
|
6
4
|
def initialize
|
7
5
|
Overcommit.config.desired_plugins.each do |plugin|
|
8
6
|
require plugin
|
9
7
|
end
|
10
|
-
rescue NameError => ex
|
11
|
-
error "Couldn't load plugin: #{ex}"
|
8
|
+
rescue LoadError, NameError => ex
|
9
|
+
log.error "Couldn't load plugin: #{ex}"
|
12
10
|
exit 0
|
13
11
|
end
|
14
12
|
|
@@ -39,8 +37,16 @@ module Overcommit
|
|
39
37
|
reporter.print_result
|
40
38
|
end
|
41
39
|
|
40
|
+
def skip_checks
|
41
|
+
@skip_checks ||= ENV.fetch('SKIP_CHECKS', '').split(/[:, ]/)
|
42
|
+
end
|
43
|
+
|
42
44
|
private
|
43
45
|
|
46
|
+
def log
|
47
|
+
Logger.instance
|
48
|
+
end
|
49
|
+
|
44
50
|
# Return all loaded plugins, skipping those that are skippable and have
|
45
51
|
# been asked to be skipped by the environment variable SKIP_CHECKS.
|
46
52
|
#
|
@@ -48,10 +54,9 @@ module Overcommit
|
|
48
54
|
# `ENV['SKIP_CHECKS'] == 'all'`
|
49
55
|
def registered_checks
|
50
56
|
@registered_checks ||= begin
|
51
|
-
|
52
|
-
skip_all = skip_checks.include? 'all'
|
57
|
+
skip_all = skip_checks.include? 'all'
|
53
58
|
HookRegistry.checks.reject do |check|
|
54
|
-
hook_name = Utils.underscorize
|
59
|
+
hook_name = Utils.underscorize(check.name).split('/').last
|
55
60
|
|
56
61
|
check.skippable? && (skip_all || skip_checks.include?(hook_name))
|
57
62
|
end
|
data/lib/overcommit/installer.rb
CHANGED
@@ -14,7 +14,7 @@ module Overcommit
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def install
|
17
|
-
|
17
|
+
log.log "Installing hooks into #{@target}"
|
18
18
|
|
19
19
|
install_scripts
|
20
20
|
install_hooks
|
@@ -22,7 +22,7 @@ module Overcommit
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def uninstall
|
25
|
-
|
25
|
+
log.log "Removing hooks from #{@target}"
|
26
26
|
|
27
27
|
uninstall_scripts
|
28
28
|
uninstall_hooks
|
@@ -31,6 +31,10 @@ module Overcommit
|
|
31
31
|
|
32
32
|
private
|
33
33
|
|
34
|
+
def log
|
35
|
+
Logger.instance
|
36
|
+
end
|
37
|
+
|
34
38
|
def hook_path
|
35
39
|
absolute_target = File.expand_path @target
|
36
40
|
File.join(absolute_target, '.git/hooks')
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
# This class centralizes all communication to STDOUT
|
4
|
+
module Overcommit
|
5
|
+
class Logger
|
6
|
+
include Singleton
|
7
|
+
|
8
|
+
def partial(*args)
|
9
|
+
print *args
|
10
|
+
end
|
11
|
+
|
12
|
+
def log(*args)
|
13
|
+
puts *args
|
14
|
+
end
|
15
|
+
|
16
|
+
def bold(str)
|
17
|
+
log "\033[1;37m#{str}\033[0m"
|
18
|
+
end
|
19
|
+
|
20
|
+
def error(str)
|
21
|
+
log "\033[31m#{str}\033[0m"
|
22
|
+
end
|
23
|
+
|
24
|
+
def success(str)
|
25
|
+
log "\033[32m#{str}\033[0m"
|
26
|
+
end
|
27
|
+
|
28
|
+
def warning(str)
|
29
|
+
log "\033[33m#{str}\033[0m"
|
30
|
+
end
|
31
|
+
|
32
|
+
def notice(str)
|
33
|
+
log "\033[1;33m#{str}\033[0m"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/overcommit/reporter.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module Overcommit
|
2
2
|
class Reporter
|
3
|
-
include ConsoleMethods
|
4
|
-
|
5
3
|
def initialize(name, checks)
|
6
4
|
@name = name
|
7
5
|
@checks = checks
|
@@ -11,7 +9,7 @@ module Overcommit
|
|
11
9
|
|
12
10
|
def with_status(check, &block)
|
13
11
|
title = " Checking #{check.name}..."
|
14
|
-
|
12
|
+
log.partial title unless check.stealth?
|
15
13
|
|
16
14
|
status, output = yield
|
17
15
|
|
@@ -20,48 +18,53 @@ module Overcommit
|
|
20
18
|
end
|
21
19
|
|
22
20
|
def print_header
|
23
|
-
|
21
|
+
log.log "Running #{@name} checks"
|
24
22
|
end
|
25
23
|
|
26
24
|
def print_result
|
27
|
-
|
25
|
+
log.log # Newline
|
26
|
+
|
28
27
|
case final_result
|
29
28
|
when :good
|
30
|
-
success "+++ All #{@name} checks passed"
|
29
|
+
log.success "+++ All #{@name} checks passed"
|
31
30
|
exit 0
|
32
31
|
when :bad
|
33
|
-
error "!!! One or more #{@name} checks failed"
|
32
|
+
log.error "!!! One or more #{@name} checks failed"
|
34
33
|
exit 1
|
35
34
|
when :stop
|
36
|
-
warning "*** One or more #{@name} checks needs attention"
|
37
|
-
warning "*** If you really want to commit, use SKIP_CHECKS"
|
38
|
-
warning "*** (takes a space-separated list of checks to skip, or 'all')"
|
35
|
+
log.warning "*** One or more #{@name} checks needs attention"
|
36
|
+
log.warning "*** If you really want to commit, use SKIP_CHECKS"
|
37
|
+
log.warning "*** (takes a space-separated list of checks to skip, or 'all')"
|
39
38
|
exit 1
|
40
39
|
end
|
41
40
|
end
|
42
41
|
|
43
42
|
private
|
44
43
|
|
44
|
+
def log
|
45
|
+
Overcommit::Logger.instance
|
46
|
+
end
|
47
|
+
|
45
48
|
def print_incremental_result(title, status, output, stealth = false)
|
46
49
|
if stealth
|
47
50
|
return if status == :good
|
48
|
-
|
51
|
+
log.partial title
|
49
52
|
end
|
50
53
|
|
51
54
|
print '.' * (@width - title.length)
|
52
55
|
case status
|
53
56
|
when :good
|
54
|
-
success 'OK'
|
57
|
+
log.success 'OK'
|
55
58
|
when :bad
|
56
|
-
error 'FAILED'
|
59
|
+
log.error 'FAILED'
|
57
60
|
print_report output
|
58
61
|
when :warn
|
59
|
-
warning output
|
62
|
+
log.warning output
|
60
63
|
when :stop
|
61
|
-
warning 'UH OH'
|
64
|
+
log.warning 'UH OH'
|
62
65
|
print_report output
|
63
66
|
else
|
64
|
-
error '???'
|
67
|
+
log.error '???'
|
65
68
|
print_report "Check didn't return a status"
|
66
69
|
exit 1
|
67
70
|
end
|
@@ -74,7 +77,7 @@ module Overcommit
|
|
74
77
|
end
|
75
78
|
|
76
79
|
def print_report(*report)
|
77
|
-
|
80
|
+
log.log report.flatten.map { |line| " #{line}" }.join("\n")
|
78
81
|
end
|
79
82
|
end
|
80
83
|
end
|
data/lib/overcommit/utils.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
module Overcommit
|
2
2
|
module Utils
|
3
3
|
class << self
|
4
|
-
include ConsoleMethods
|
5
|
-
|
6
4
|
@@hooks = []
|
7
5
|
|
8
6
|
def register_hook(hook)
|
@@ -20,7 +18,7 @@ module Overcommit
|
|
20
18
|
def load_hooks
|
21
19
|
require File.expand_path("../hooks/#{hook_name}", __FILE__)
|
22
20
|
rescue LoadError
|
23
|
-
error "No hook definition found for #{hook_name}"
|
21
|
+
log.error "No hook definition found for #{hook_name}"
|
24
22
|
exit 1
|
25
23
|
end
|
26
24
|
|
@@ -55,6 +53,12 @@ module Overcommit
|
|
55
53
|
@modified_files ||=
|
56
54
|
`git diff --cached --name-only --diff-filter=ACM`.split "\n"
|
57
55
|
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def log
|
60
|
+
Logger.instance
|
61
|
+
end
|
58
62
|
end
|
59
63
|
end
|
60
64
|
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.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Causes Engineering
|
@@ -33,13 +33,13 @@ extra_rdoc_files: []
|
|
33
33
|
files:
|
34
34
|
- lib/overcommit/cli.rb
|
35
35
|
- lib/overcommit/configuration.rb
|
36
|
-
- lib/overcommit/console_methods.rb
|
37
36
|
- lib/overcommit/errors.rb
|
38
37
|
- lib/overcommit/git_hook.rb
|
39
38
|
- lib/overcommit/hook_specific_check.rb
|
40
39
|
- lib/overcommit/hooks/commit_msg.rb
|
41
40
|
- lib/overcommit/hooks/pre_commit.rb
|
42
41
|
- lib/overcommit/installer.rb
|
42
|
+
- lib/overcommit/logger.rb
|
43
43
|
- lib/overcommit/plugins/commit_msg/change_id.rb
|
44
44
|
- lib/overcommit/plugins/commit_msg/release_note.rb
|
45
45
|
- lib/overcommit/plugins/commit_msg/russian_novel.rb
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Overcommit
|
2
|
-
module ConsoleMethods
|
3
|
-
def bold(str)
|
4
|
-
puts "\033[1;37m#{str}\033[0m"
|
5
|
-
end
|
6
|
-
|
7
|
-
def error(str)
|
8
|
-
puts "\033[31m#{str}\033[0m"
|
9
|
-
end
|
10
|
-
|
11
|
-
def success(str)
|
12
|
-
puts "\033[32m#{str}\033[0m"
|
13
|
-
end
|
14
|
-
|
15
|
-
def warning(str)
|
16
|
-
puts "\033[33m#{str}\033[0m"
|
17
|
-
end
|
18
|
-
|
19
|
-
def notice(str)
|
20
|
-
puts "\033[1;33m#{str}\033[0m"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|