pre-commit 0.7.0 → 0.8.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 +7 -0
- data/README.md +11 -3
- data/lib/pre-commit/checks.rb +5 -1
- data/lib/pre-commit/checks/pry_check.rb +47 -0
- data/lib/pre-commit/checks/rspec_focus_check.rb +54 -0
- data/lib/pre-commit/checks/ruby_symbol_hashrockets.rb +1 -1
- data/templates/pre-commit-hook +1 -1
- metadata +10 -12
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4d9c371797ba41d4ea7f982f02afb3ea83509b6c
|
4
|
+
data.tar.gz: 3db78877071110d7c8a6594144d6a581ff05f4b9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ef060f68886d56abe7fb9ead2edfa62f287cb3a84fa76c83a26748fdde3f726a83124401274fbd7a2bb3a89c755ae5efc3a40158de8cd0e19d895deb59bd0e08
|
7
|
+
data.tar.gz: 5e182f1fd7511e7bddd86704c40220f6f2c83b69108213b3f1052bd123d984cfd2850bfb963828ba36765c9b3cfab665501d709f229f21a7656431f1c70fe62d
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
A better pre-commit hook for git.
|
2
2
|
|
3
|
+
[][1]
|
4
|
+
[][2]
|
5
|
+
|
3
6
|
## Installation
|
4
7
|
|
5
8
|
Install the gem
|
@@ -20,19 +23,21 @@ These are the available checks:
|
|
20
23
|
* white_space
|
21
24
|
* console_log
|
22
25
|
* debugger
|
26
|
+
* pry
|
23
27
|
* tabs
|
24
28
|
* jshint
|
25
29
|
* js\_lint\_all (Runs JSLint on all staged JS files)
|
26
30
|
* js\_lint\_new (Runs JSLint on all new staged JS files)
|
27
31
|
* closure\_syntax\_check
|
28
32
|
* php (Runs php -l on all staged files)
|
33
|
+
* rspec_focus (Will check if you are about to check in a :focus in a spec file)
|
29
34
|
* ruby_symbol_hashrockets (1.9 syntax. BAD :foo => "bar". GOOD foo: "bar")
|
30
35
|
* local (executes `config/pre-commit.rb` with list of changed files)
|
31
|
-
*
|
36
|
+
* merge_conflict (Will check if you are about to check in a merge conflict)
|
32
37
|
* migrations (Will make sure you check in the proper files after creating a Rails migration)
|
33
38
|
* ci (Will run the `pre_commit:ci` rake task and pass or fail accordingly)
|
34
39
|
|
35
|
-
To configure which checks you would like to run, simply set the `pre-commit.checks` git configuration setting.
|
40
|
+
To configure which checks you would like to run, simply set the `pre-commit.checks` git configuration setting.
|
36
41
|
|
37
42
|
To enable `white_space` and `tab` checks:
|
38
43
|
|
@@ -46,4 +51,7 @@ To enable `white_space`, `console_log` and `debugger` checks:
|
|
46
51
|
|
47
52
|
Note: If no checks are configured, a default set of checks is run:
|
48
53
|
|
49
|
-
white_space, console_log, debugger, tabs, jshint, migrations, merge_conflict, local
|
54
|
+
white_space, console_log, debugger, pry, tabs, jshint, migrations, merge_conflict, local
|
55
|
+
|
56
|
+
[1]: https://rubygems.org/gems/pre-commit
|
57
|
+
[2]: https://travis-ci.org/jish/pre-commit
|
data/lib/pre-commit/checks.rb
CHANGED
@@ -10,6 +10,8 @@ require 'pre-commit/checks/jshint_check'
|
|
10
10
|
require 'pre-commit/checks/migration_check'
|
11
11
|
require 'pre-commit/checks/ci_check'
|
12
12
|
require 'pre-commit/checks/php_check'
|
13
|
+
require 'pre-commit/checks/pry_check'
|
14
|
+
require 'pre-commit/checks/rspec_focus_check'
|
13
15
|
require 'pre-commit/checks/ruby_symbol_hashrockets'
|
14
16
|
|
15
17
|
module PreCommit
|
@@ -35,6 +37,7 @@ module PreCommit
|
|
35
37
|
:js_lint_new => JslintCheck.new(:new),
|
36
38
|
:jshint => JshintCheck.new,
|
37
39
|
:debugger => DebuggerCheck,
|
40
|
+
:pry => PryCheck,
|
38
41
|
:local => LocalCheck,
|
39
42
|
:tabs => Tabs,
|
40
43
|
:closure_syntax_check => ClosureSyntaxCheck,
|
@@ -42,6 +45,7 @@ module PreCommit
|
|
42
45
|
:migrations => MigrationCheck.new,
|
43
46
|
:ci => CiCheck.new,
|
44
47
|
:php => PhpCheck.new,
|
48
|
+
:rspec_focus => RSpecFocusCheck,
|
45
49
|
:ruby_symbol_hashrockets => RubySymbolHashrockets
|
46
50
|
}
|
47
51
|
|
@@ -60,7 +64,7 @@ module PreCommit
|
|
60
64
|
checks_to_run = `git config pre-commit.checks`.chomp.split(/,\s*/).map(&:to_sym)
|
61
65
|
|
62
66
|
if checks_to_run.empty?
|
63
|
-
Checks.values_at(:white_space, :console_log, :debugger, :tabs, :jshint,
|
67
|
+
Checks.values_at(:white_space, :console_log, :debugger, :pry, :tabs, :jshint,
|
64
68
|
:migrations, :merge_conflict, :local)
|
65
69
|
else
|
66
70
|
Checks.values_at(*checks_to_run)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module PreCommit
|
2
|
+
class PryCheck
|
3
|
+
|
4
|
+
attr_accessor :staged_files, :error_message, :grep_command
|
5
|
+
|
6
|
+
def self.call(quiet=false)
|
7
|
+
dirs = ['app/', 'lib/', 'script/', 'vendor/', 'test/'].reject {|d| !File.exists?(d)}
|
8
|
+
check = new
|
9
|
+
check.staged_files = Utils.staged_files(*dirs)
|
10
|
+
|
11
|
+
result = check.run
|
12
|
+
if !quiet && !result
|
13
|
+
$stderr.puts check.error_message
|
14
|
+
$stderr.puts
|
15
|
+
check.print_dash_n_reminder
|
16
|
+
end
|
17
|
+
result
|
18
|
+
end
|
19
|
+
|
20
|
+
def run
|
21
|
+
return true if staged_files.empty?
|
22
|
+
|
23
|
+
if detected_bad_code?
|
24
|
+
@error_message = "pre-commit: binding.pry statement(s) found:\n"
|
25
|
+
@error_message += instances_of_pry_violations
|
26
|
+
false
|
27
|
+
else
|
28
|
+
true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def detected_bad_code?
|
33
|
+
!system("git diff --cached -S binding.pry --quiet --exit-code")
|
34
|
+
end
|
35
|
+
|
36
|
+
def instances_of_pry_violations
|
37
|
+
cmd = grep_command || "git grep"
|
38
|
+
`#{cmd} -nH "binding\.pry" #{staged_files}`
|
39
|
+
end
|
40
|
+
|
41
|
+
def print_dash_n_reminder
|
42
|
+
$stderr.puts 'You can bypass this check using `git commit -n`'
|
43
|
+
$stderr.puts
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module PreCommit
|
2
|
+
class RSpecFocusCheck
|
3
|
+
|
4
|
+
attr_accessor :staged_files, :error_message, :grep_command, :spec_files
|
5
|
+
|
6
|
+
def self.call(quiet=false)
|
7
|
+
dirs = ['spec/'].reject {|d| !File.exists?(d)}
|
8
|
+
check = new
|
9
|
+
check.staged_files = Utils.staged_files(*dirs)
|
10
|
+
|
11
|
+
result = check.run
|
12
|
+
if !quiet && !result
|
13
|
+
$stderr.puts check.error_message
|
14
|
+
$stderr.puts
|
15
|
+
check.print_dash_n_reminder
|
16
|
+
end
|
17
|
+
result
|
18
|
+
end
|
19
|
+
|
20
|
+
def run
|
21
|
+
return true if staged_files.empty?
|
22
|
+
|
23
|
+
if detected_bad_code?
|
24
|
+
@error_message = "pre-commit: :focus in spec(s) found:\n"
|
25
|
+
@error_message += instances_of_rspec_focus_violations
|
26
|
+
false
|
27
|
+
else
|
28
|
+
true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def detected_bad_code?
|
33
|
+
spec_files = staged_files.split(' ').select do |file|
|
34
|
+
file =~ /_spec\.rb$/
|
35
|
+
end
|
36
|
+
|
37
|
+
return false if spec_files.empty?
|
38
|
+
|
39
|
+
diff = `git diff --cached -G:focus #{spec_files.join(" ")}`
|
40
|
+
!!(diff =~ /[\W\s]:focus[\W\s]/)
|
41
|
+
end
|
42
|
+
|
43
|
+
def instances_of_rspec_focus_violations
|
44
|
+
cmd = grep_command || "git grep"
|
45
|
+
`#{cmd} -nHw ':focus' #{staged_files}`
|
46
|
+
end
|
47
|
+
|
48
|
+
def print_dash_n_reminder
|
49
|
+
$stderr.puts 'You can bypass this check using `git commit -n`'
|
50
|
+
$stderr.puts
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
data/templates/pre-commit-hook
CHANGED
@@ -9,7 +9,7 @@ else
|
|
9
9
|
end
|
10
10
|
cmd << " -r pre-commit"
|
11
11
|
|
12
|
-
if !system("#{cmd} -e '' 2>&1")
|
12
|
+
if !system("#{cmd} -e ';' 2>&1")
|
13
13
|
$stderr.puts "pre-commit: WARNING: Skipping checks because the pre-commit gem is not installed. (Did you change your Ruby version?)"
|
14
14
|
exit(0)
|
15
15
|
end
|
metadata
CHANGED
@@ -1,30 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pre-commit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.8.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Shajith Chacko, Josh Lubaway
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-03-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: execjs
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
description: A git pre-commit hook written in ruby with a few more tricks up its sleeve
|
@@ -46,6 +43,8 @@ files:
|
|
46
43
|
- lib/pre-commit/checks/merge_conflict.rb
|
47
44
|
- lib/pre-commit/checks/migration_check.rb
|
48
45
|
- lib/pre-commit/checks/php_check.rb
|
46
|
+
- lib/pre-commit/checks/pry_check.rb
|
47
|
+
- lib/pre-commit/checks/rspec_focus_check.rb
|
49
48
|
- lib/pre-commit/checks/ruby_symbol_hashrockets.rb
|
50
49
|
- lib/pre-commit/checks/tabs.rb
|
51
50
|
- lib/pre-commit/checks.rb
|
@@ -65,6 +64,7 @@ files:
|
|
65
64
|
- bin/pre-commit
|
66
65
|
homepage: http://github.com/jish/pre-commit
|
67
66
|
licenses: []
|
67
|
+
metadata: {}
|
68
68
|
post_install_message:
|
69
69
|
rdoc_options:
|
70
70
|
- --main
|
@@ -72,20 +72,18 @@ rdoc_options:
|
|
72
72
|
require_paths:
|
73
73
|
- lib
|
74
74
|
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
75
|
requirements:
|
77
|
-
- -
|
76
|
+
- - '>='
|
78
77
|
- !ruby/object:Gem::Version
|
79
78
|
version: '0'
|
80
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
80
|
requirements:
|
83
|
-
- -
|
81
|
+
- - '>='
|
84
82
|
- !ruby/object:Gem::Version
|
85
83
|
version: '0'
|
86
84
|
requirements: []
|
87
85
|
rubyforge_project:
|
88
|
-
rubygems_version:
|
86
|
+
rubygems_version: 2.0.0
|
89
87
|
signing_key:
|
90
88
|
specification_version: 3
|
91
89
|
summary: A slightly better git pre-commit hook
|