pre-commit 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +39 -16
  3. data/bin/pre-commit +1 -12
  4. data/lib/plugins/pluginator/extensions/find_check.rb +26 -0
  5. data/lib/plugins/pre_commit/checks/before_all.rb +23 -7
  6. data/lib/plugins/pre_commit/checks/ci.rb +10 -3
  7. data/lib/plugins/pre_commit/checks/closure.rb +12 -4
  8. data/lib/plugins/pre_commit/checks/coffeelint.rb +9 -4
  9. data/lib/plugins/pre_commit/checks/common.rb +17 -0
  10. data/lib/plugins/pre_commit/checks/console_log.rb +23 -7
  11. data/lib/plugins/pre_commit/checks/csslint.rb +32 -0
  12. data/lib/plugins/pre_commit/checks/debugger.rb +14 -10
  13. data/lib/plugins/pre_commit/checks/gemfile_path.rb +18 -7
  14. data/lib/plugins/pre_commit/checks/jshint.rb +10 -4
  15. data/lib/plugins/pre_commit/checks/jslint.rb +11 -5
  16. data/lib/plugins/pre_commit/checks/local.rb +10 -2
  17. data/lib/plugins/pre_commit/checks/merge_conflict.rb +15 -6
  18. data/lib/plugins/pre_commit/checks/migration.rb +32 -26
  19. data/lib/plugins/pre_commit/checks/nb_space.rb +10 -2
  20. data/lib/plugins/pre_commit/checks/php.rb +10 -4
  21. data/lib/plugins/pre_commit/checks/pry.rb +15 -6
  22. data/lib/plugins/pre_commit/checks/rails.rb +17 -0
  23. data/lib/plugins/pre_commit/checks/rspec_focus.rb +19 -7
  24. data/lib/plugins/pre_commit/checks/rubocop.rb +20 -8
  25. data/lib/plugins/pre_commit/checks/ruby.rb +17 -0
  26. data/lib/plugins/pre_commit/checks/ruby_symbol_hashrockets.rb +17 -8
  27. data/lib/plugins/pre_commit/checks/tabs.rb +15 -8
  28. data/lib/plugins/pre_commit/checks/whitespace.rb +28 -5
  29. data/lib/plugins/pre_commit/configuration/providers/README.md +10 -0
  30. data/lib/plugins/pre_commit/configuration/providers/default.rb +34 -0
  31. data/lib/plugins/pre_commit/configuration/providers/git.rb +26 -0
  32. data/lib/plugins/pre_commit/configuration/providers/git_old.rb +28 -0
  33. data/lib/plugins/pre_commit/configuration/providers/yaml.rb +67 -0
  34. data/lib/pre-commit.rb +28 -1
  35. data/lib/pre-commit/checks.rb +1 -98
  36. data/lib/pre-commit/checks/grep.rb +57 -0
  37. data/lib/{plugins/pre_commit → pre-commit}/checks/js.rb +15 -7
  38. data/lib/pre-commit/checks/plugin.rb +13 -0
  39. data/lib/pre-commit/cli.rb +46 -19
  40. data/lib/pre-commit/configuration.rb +54 -0
  41. data/lib/pre-commit/configuration/providers.rb +53 -0
  42. data/lib/pre-commit/installer.rb +54 -0
  43. data/lib/pre-commit/list_evaluator.rb +85 -0
  44. data/lib/pre-commit/plugins_list.rb +87 -0
  45. data/lib/pre-commit/runner.rb +54 -9
  46. data/lib/pre-commit/support/csslint/csslint.js +9259 -0
  47. data/lib/pre-commit/utils/git_conversions.rb +56 -0
  48. data/lib/pre-commit/utils/staged_files.rb +21 -0
  49. metadata +47 -30
  50. data/lib/pre-commit/support/templates/automatic_hook +0 -35
  51. data/lib/pre-commit/support/templates/default_hook +0 -35
  52. data/lib/pre-commit/support/templates/manual_hook +0 -14
  53. data/lib/pre-commit/utils.rb +0 -27
@@ -0,0 +1,56 @@
1
+ module PreCommit
2
+ module Utils
3
+ module GitConversions
4
+
5
+ # git_to_ruby related
6
+
7
+ def git_to_ruby(value)
8
+ value = value.chomp.strip if String === value
9
+ case value
10
+ when /\A\[(.*)\]\Z/
11
+ str2arr($1)
12
+ when ''
13
+ nil
14
+ when String
15
+ str_symbolize(value)
16
+ else
17
+ value
18
+ end
19
+ end
20
+
21
+ def str2arr(string)
22
+ string.split(/, ?/).map{|string| str_symbolize(string.chomp.strip) }
23
+ end
24
+
25
+ def str_symbolize(string)
26
+ if string =~ /\A:(.*)\Z/
27
+ then $1.to_sym
28
+ else string
29
+ end
30
+ end
31
+
32
+ # ruby_to_git related
33
+
34
+ def ruby_to_git(value)
35
+ case value
36
+ when Array
37
+ arr2str(value)
38
+ else
39
+ sym_symbolize(value)
40
+ end
41
+ end
42
+
43
+ def arr2str(value)
44
+ "[#{value.map{|v| sym_symbolize(v) }.join(", ")}]"
45
+ end
46
+
47
+ def sym_symbolize(value)
48
+ if Symbol === value
49
+ then ":#{value}"
50
+ else value.to_s
51
+ end
52
+ end
53
+
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,21 @@
1
+ module PreCommit
2
+ module Utils
3
+ module StagedFiles
4
+
5
+ def staged_files
6
+ @staged_files ||= begin
7
+ files = `git diff --cached --name-only --diff-filter=ACM`.split
8
+ files.reject { |f| size = File.size(f); size > 1_000_000 || (size > 20 && binary?(f)) }
9
+ end
10
+ end
11
+
12
+ private
13
+ # from https://github.com/djberg96/ptools/blob/master/lib/ptools.rb#L90
14
+ def binary?(file)
15
+ s = (File.read(file, File.stat(file).blksize) || "").split(//)
16
+ ((s.size - s.grep(" ".."~").size) / s.size.to_f) > 0.30
17
+ end
18
+
19
+ end
20
+ end
21
+ end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pre-commit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shajith Chacko, Josh Lubaway
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-30 00:00:00.000000000 Z
11
+ date: 2014-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pluginator
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0.12'
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '0.12'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: guard
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '2.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: guard-minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '2.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: minitest
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '4.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '4.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest-reporters
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: A git pre-commit hook written in ruby with a few more tricks up its sleeve
@@ -102,14 +102,16 @@ extensions: []
102
102
  extra_rdoc_files:
103
103
  - README.md
104
104
  files:
105
+ - lib/plugins/pluginator/extensions/find_check.rb
105
106
  - lib/plugins/pre_commit/checks/before_all.rb
106
107
  - lib/plugins/pre_commit/checks/ci.rb
107
108
  - lib/plugins/pre_commit/checks/closure.rb
108
109
  - lib/plugins/pre_commit/checks/coffeelint.rb
110
+ - lib/plugins/pre_commit/checks/common.rb
109
111
  - lib/plugins/pre_commit/checks/console_log.rb
112
+ - lib/plugins/pre_commit/checks/csslint.rb
110
113
  - lib/plugins/pre_commit/checks/debugger.rb
111
114
  - lib/plugins/pre_commit/checks/gemfile_path.rb
112
- - lib/plugins/pre_commit/checks/js.rb
113
115
  - lib/plugins/pre_commit/checks/jshint.rb
114
116
  - lib/plugins/pre_commit/checks/jslint.rb
115
117
  - lib/plugins/pre_commit/checks/local.rb
@@ -118,21 +120,35 @@ files:
118
120
  - lib/plugins/pre_commit/checks/nb_space.rb
119
121
  - lib/plugins/pre_commit/checks/php.rb
120
122
  - lib/plugins/pre_commit/checks/pry.rb
123
+ - lib/plugins/pre_commit/checks/rails.rb
121
124
  - lib/plugins/pre_commit/checks/rspec_focus.rb
122
125
  - lib/plugins/pre_commit/checks/rubocop.rb
126
+ - lib/plugins/pre_commit/checks/ruby.rb
123
127
  - lib/plugins/pre_commit/checks/ruby_symbol_hashrockets.rb
124
128
  - lib/plugins/pre_commit/checks/tabs.rb
125
129
  - lib/plugins/pre_commit/checks/whitespace.rb
130
+ - lib/plugins/pre_commit/configuration/providers/default.rb
131
+ - lib/plugins/pre_commit/configuration/providers/git.rb
132
+ - lib/plugins/pre_commit/configuration/providers/git_old.rb
133
+ - lib/plugins/pre_commit/configuration/providers/README.md
134
+ - lib/plugins/pre_commit/configuration/providers/yaml.rb
135
+ - lib/pre-commit/checks/grep.rb
136
+ - lib/pre-commit/checks/js.rb
137
+ - lib/pre-commit/checks/plugin.rb
126
138
  - lib/pre-commit/checks.rb
127
139
  - lib/pre-commit/cli.rb
140
+ - lib/pre-commit/configuration/providers.rb
141
+ - lib/pre-commit/configuration.rb
142
+ - lib/pre-commit/installer.rb
143
+ - lib/pre-commit/list_evaluator.rb
144
+ - lib/pre-commit/plugins_list.rb
128
145
  - lib/pre-commit/runner.rb
129
146
  - lib/pre-commit/support/closure/compiler.jar
147
+ - lib/pre-commit/support/csslint/csslint.js
130
148
  - lib/pre-commit/support/jshint/jshint.js
131
149
  - lib/pre-commit/support/jslint/lint.js
132
- - lib/pre-commit/support/templates/automatic_hook
133
- - lib/pre-commit/support/templates/default_hook
134
- - lib/pre-commit/support/templates/manual_hook
135
- - lib/pre-commit/utils.rb
150
+ - lib/pre-commit/utils/git_conversions.rb
151
+ - lib/pre-commit/utils/staged_files.rb
136
152
  - lib/pre-commit.rb
137
153
  - README.md
138
154
  - bin/pre-commit
@@ -158,8 +174,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
174
  version: '0'
159
175
  requirements: []
160
176
  rubyforge_project:
161
- rubygems_version: 2.1.11
177
+ rubygems_version: 2.0.2
162
178
  signing_key:
163
179
  specification_version: 3
164
180
  summary: A slightly better git pre-commit hook
165
181
  test_files: []
182
+ has_rdoc:
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- # This hook has a focus on portability.
4
- # This hook will attempt to setup your environment before running checks.
5
- #
6
- # If you would like `pre-commit` to get out of your way and you are comfortable
7
- # setting up your own environment, you can install the manual hook using:
8
- #
9
- # pre-commit install --manual
10
- #
11
-
12
- cmd=`git config pre-commit.ruby 2>/dev/null`
13
- if test -n "${cmd}"
14
- then true
15
- elif which rvm > /dev/null
16
- then cmd="rvm default do ruby"
17
- elif which rbenv > /dev/null
18
- then cmd="rbenv exec ruby"
19
- else cmd="ruby"
20
- fi
21
-
22
- export rvm_silence_path_mismatch_check_flag=1
23
-
24
- ${cmd} -rrubygems -e '
25
- begin
26
- require "pre-commit"
27
- true
28
- rescue LoadError => e
29
- $stderr.puts <<-MESSAGE
30
- pre-commit: WARNING: Skipping checks because: #{e}
31
- pre-commit: Did you set your Ruby version?
32
- MESSAGE
33
- false
34
- end and PreCommit.run
35
- '
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- # This hook has a focus on portability.
4
- # This hook will attempt to setup your environment before running checks.
5
- #
6
- # If you would like `pre-commit` to get out of your way and you are comfortable
7
- # setting up your own environment, you can install the manual hook using:
8
- #
9
- # pre-commit install --manual
10
- #
11
-
12
- cmd=`git config pre-commit.ruby 2>/dev/null`
13
- if test -n "${cmd}"
14
- then true
15
- elif which rvm > /dev/null
16
- then cmd="rvm default do ruby"
17
- elif which rbenv > /dev/null
18
- then cmd="rbenv exec ruby"
19
- else cmd="ruby"
20
- fi
21
-
22
- export rvm_silence_path_mismatch_check_flag=1
23
-
24
- ${cmd} -rrubygems -e '
25
- begin
26
- require "pre-commit"
27
- true
28
- rescue LoadError => e
29
- $stderr.puts <<-MESSAGE
30
- pre-commit: WARNING: Skipping checks because: #{e}
31
- pre-commit: Did you set your Ruby version?
32
- MESSAGE
33
- false
34
- end and PreCommit.run
35
- '
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # This hook has a focus on simplicity.
4
- # This hook puts the burden on you to set up your environment properly.
5
- #
6
- # If you would like `pre-commit` to attempt to setup your environment for you
7
- # before the checks run, you can install the automatic environment hook using:
8
- #
9
- # pre-commit install --automatic
10
- #
11
-
12
- require 'pre-commit'
13
-
14
- PreCommit.run
@@ -1,27 +0,0 @@
1
- module PreCommit
2
- class Utils
3
-
4
- def self.staged_files
5
- @staged_files ||= begin
6
- files = `git diff --cached --name-only --diff-filter=ACM`.split
7
- files.reject { |f| size = File.size(f); size > 1_000_000 || (size > 20 && binary?(f)) }
8
- end
9
- end
10
-
11
- # from https://github.com/djberg96/ptools/blob/master/lib/ptools.rb#L90
12
- def self.binary?(file)
13
- s = (File.read(file, File.stat(file).blksize) || "").split(//)
14
- ((s.size - s.grep(" ".."~").size) / s.size.to_f) > 0.30
15
- end
16
-
17
- def self.grep
18
- grep_version = `grep --version | head -n 1 | sed -e 's/^[^0-9.]*\([0-9.]*\)$/\1/'`
19
- if grep_version =~ /FreeBSD/
20
- "grep -EnIH"
21
- else
22
- "grep -PnIH"
23
- end
24
- end
25
-
26
- end
27
- end