overcommit 0.40.0 → 0.41.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/default.yml +15 -0
- data/lib/overcommit/hook/pre_commit/php_cs.rb +48 -0
- data/lib/overcommit/hook/pre_commit/php_lint.rb +42 -0
- data/lib/overcommit/logger.rb +7 -1
- data/lib/overcommit/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27b302156918dca6c24185cf0cbb4c88ee1ff17a
|
4
|
+
data.tar.gz: c537a8ca33fbeaa4aeb0aa73cb47fa6a23beac80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1c4c0011bb62eea08e898950211af0fa16053067dca6e91c50f06193b889492c5f71c035015e321af3ad35b6b742f49324b205ce4db7de5f337a64cc1fca968
|
7
|
+
data.tar.gz: d550e63d8fc852da8503657c99041304d850dc45936044e16294f7ed72d05d793493059eaf0e357e51cfdf608ea43ecf4a2d435c322bc3e9efa1d1e2bbb1f4e9
|
data/config/default.yml
CHANGED
@@ -448,6 +448,21 @@ PreCommit:
|
|
448
448
|
install_command: 'pip install pep8'
|
449
449
|
include: '**/*.py'
|
450
450
|
|
451
|
+
PhpLint:
|
452
|
+
enabled: false
|
453
|
+
description: 'Testing with PHP lint'
|
454
|
+
required_executable: 'php'
|
455
|
+
command: 'php'
|
456
|
+
flags: ['-l']
|
457
|
+
include: '**/*.php'
|
458
|
+
|
459
|
+
PhpCs:
|
460
|
+
enabled: false
|
461
|
+
description: 'Analyze with PHP_CodeSniffer'
|
462
|
+
command: 'vendor/bin/phpcs'
|
463
|
+
flags: ['--standard=PSR2', '--report=csv']
|
464
|
+
include: '**/*.php'
|
465
|
+
|
451
466
|
Pronto:
|
452
467
|
enabled: false
|
453
468
|
description: 'Analyzing with pronto'
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Overcommit::Hook::PreCommit
|
2
|
+
# Runs `phpcs` against any modified PHP files.
|
3
|
+
class PhpCs < Base
|
4
|
+
# Parse `phpcs` csv mode output
|
5
|
+
MESSAGE_REGEX = /^\"(?<file>.+)\",(?<line>\d+),\d+,(?<type>.+),\"(?<msg>.+)\"/
|
6
|
+
MESSAGE_TYPE_CATEGORIZER = lambda do |type|
|
7
|
+
'error'.include?(type) ? :error : :warning
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
messages = []
|
12
|
+
|
13
|
+
applicable_files.each do |file|
|
14
|
+
result = execute(command, args: [file])
|
15
|
+
if result.status
|
16
|
+
rows = result.stdout.split("\n")
|
17
|
+
|
18
|
+
# Discard the csv header
|
19
|
+
rows.shift
|
20
|
+
|
21
|
+
# Push each of the errors in the particular file into the array
|
22
|
+
rows.map do |row|
|
23
|
+
messages << row
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
return :pass if messages.empty?
|
29
|
+
|
30
|
+
parse_messages(messages)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Transform the CSV output into a tidy human readable message
|
34
|
+
def parse_messages(messages)
|
35
|
+
output = []
|
36
|
+
|
37
|
+
messages.map do |message|
|
38
|
+
message.scan(MESSAGE_REGEX).map do |file, line, type, msg|
|
39
|
+
type = MESSAGE_TYPE_CATEGORIZER.call(type)
|
40
|
+
text = " #{file}:#{line}\n #{msg}"
|
41
|
+
output << Overcommit::Hook::Message.new(type, file, line.to_i, text)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
output
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Overcommit::Hook::PreCommit
|
2
|
+
# Runs `php -l` against any modified PHP files.
|
3
|
+
class PhpLint < Base
|
4
|
+
# Sample String
|
5
|
+
# rubocop:disable Metrics/LineLength
|
6
|
+
# PHP Parse error: syntax error, unexpected 'require_once' (T_REQUIRE_ONCE) in site/sumo.php on line 12
|
7
|
+
# rubocop:enable Metrics/LineLength
|
8
|
+
MESSAGE_REGEX = /^(?<type>.+)\:\s+(?<message>.+) in (?<file>.+) on line (?<line>\d+)/
|
9
|
+
|
10
|
+
def run
|
11
|
+
# A list of error messages
|
12
|
+
messages = []
|
13
|
+
|
14
|
+
# Exit status for all of the runs. Should be zero!
|
15
|
+
exit_status_sum = 0
|
16
|
+
|
17
|
+
# Run for each of our applicable files
|
18
|
+
applicable_files.each do |file|
|
19
|
+
result = execute(command, args: [file])
|
20
|
+
output = result.stdout.chomp
|
21
|
+
exit_status_sum += result.status
|
22
|
+
if result.status
|
23
|
+
# `php -l` returns with a leading newline, and we only need the first
|
24
|
+
# line, there is usually some redundancy
|
25
|
+
messages << output.lstrip.split("\n").first
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# If the sum of all lint status is zero, then none had exit status
|
30
|
+
return :pass if exit_status_sum == 0
|
31
|
+
|
32
|
+
# No messages is great news for us
|
33
|
+
return :pass if messages.empty?
|
34
|
+
|
35
|
+
# Return the list of message objects
|
36
|
+
extract_messages(
|
37
|
+
messages,
|
38
|
+
MESSAGE_REGEX
|
39
|
+
)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/overcommit/logger.rb
CHANGED
@@ -11,6 +11,12 @@ module Overcommit
|
|
11
11
|
# @param out [IO]
|
12
12
|
def initialize(out)
|
13
13
|
@out = out
|
14
|
+
@colorize =
|
15
|
+
if ENV.key?('OVERCOMMIT_COLOR')
|
16
|
+
!%w[0 false no].include?(ENV['OVERCOMMIT_COLOR'])
|
17
|
+
else
|
18
|
+
@out.tty?
|
19
|
+
end
|
14
20
|
end
|
15
21
|
|
16
22
|
# Write output without a trailing newline.
|
@@ -78,7 +84,7 @@ module Overcommit
|
|
78
84
|
# @param partial [true,false] whether to omit a newline
|
79
85
|
def color(code, str, partial = false)
|
80
86
|
send(partial ? :partial : :log,
|
81
|
-
@
|
87
|
+
@colorize ? "\033[#{code}m#{str}\033[0m" : str)
|
82
88
|
end
|
83
89
|
end
|
84
90
|
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.41.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: 2017-
|
12
|
+
date: 2017-08-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: childprocess
|
@@ -150,6 +150,8 @@ files:
|
|
150
150
|
- lib/overcommit/hook/pre_commit/nginx_test.rb
|
151
151
|
- lib/overcommit/hook/pre_commit/pep257.rb
|
152
152
|
- lib/overcommit/hook/pre_commit/pep8.rb
|
153
|
+
- lib/overcommit/hook/pre_commit/php_cs.rb
|
154
|
+
- lib/overcommit/hook/pre_commit/php_lint.rb
|
153
155
|
- lib/overcommit/hook/pre_commit/pronto.rb
|
154
156
|
- lib/overcommit/hook/pre_commit/puppet_lint.rb
|
155
157
|
- lib/overcommit/hook/pre_commit/pycodestyle.rb
|