gergich 1.2.3 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{bin → exe}/gergich +0 -0
- data/{bin → exe}/master_bouncer +0 -0
- data/lib/gergich/capture/androidlint_capture.rb +8 -3
- data/lib/gergich/capture/brakeman_capture.rb +3 -2
- data/lib/gergich/capture/eslint_capture.rb +2 -1
- data/lib/gergich/capture/flake8_capture.rb +1 -1
- data/lib/gergich/capture/i18nliner_capture.rb +1 -1
- data/lib/gergich/capture/rubocop_capture.rb +19 -3
- data/lib/gergich/capture/shellcheck_capture.rb +2 -1
- data/lib/gergich/capture/stylelint_capture.rb +2 -5
- data/lib/gergich/capture/swiftlint_capture.rb +1 -1
- data/lib/gergich/capture/tsc_capture.rb +27 -0
- data/lib/gergich/capture/yamllint_capture.rb +8 -2
- data/lib/gergich/capture.rb +12 -5
- data/lib/gergich/cli/gergich.rb +7 -4
- data/lib/gergich/cli/master_bouncer.rb +5 -6
- data/lib/gergich/cli.rb +1 -1
- data/lib/gergich.rb +21 -25
- metadata +43 -33
- data/LICENSE +0 -20
- data/README.md +0 -178
- data/bin/check_coverage +0 -8
- data/bin/run_tests.sh +0 -22
- data/spec/gergich/capture/androidlint_capture_spec.rb +0 -61
- data/spec/gergich/capture/brakeman_capture_spec.rb +0 -91
- data/spec/gergich/capture/custom_capture_spec.rb +0 -41
- data/spec/gergich/capture/eslint_capture_spec.rb +0 -31
- data/spec/gergich/capture/flake8_capture_spec.rb +0 -23
- data/spec/gergich/capture/i18nliner_capture_spec.rb +0 -25
- data/spec/gergich/capture/rubocop_capture_spec.rb +0 -75
- data/spec/gergich/capture/shellcheck_capture_spec.rb +0 -83
- data/spec/gergich/capture/stylelint_capture_spec.rb +0 -54
- data/spec/gergich/capture/swiftlint_capture_spec.rb +0 -42
- data/spec/gergich/capture/yamllint_capture_spec.rb +0 -31
- data/spec/gergich/capture_spec.rb +0 -75
- data/spec/gergich_spec.rb +0 -396
- data/spec/spec_helper.rb +0 -92
- data/spec/support/capture_shared_examples.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2266d14e8768ee3abd861d8ea5783ccec76f2d739a7f47714a716d2b2633d315
|
4
|
+
data.tar.gz: 117e4a786302fb5f1f8edb314dcbf610bac9509c088fb2187eed12e66b27b8ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e834a5eae2e31b72820880ffbcb6b3dfd2ead64d03e774f322a63b0758a9dad48eb51c24ed9e6cd0fb5d598c91b1d042b3034df41d8c417e6406636370ee058
|
7
|
+
data.tar.gz: 8eb5874994069df2ef550b86ad41377ae37f9cf1f2ef9a54769cc29279a0e1f899447a66f36c5c069b4265210f888696d906fbe6e3d1d13407b4bea6e8060f1a
|
data/{bin → exe}/gergich
RENAMED
File without changes
|
data/{bin → exe}/master_bouncer
RENAMED
File without changes
|
@@ -34,9 +34,14 @@ module Gergich
|
|
34
34
|
/mx
|
35
35
|
|
36
36
|
output.scan(pattern).map { |file, line, severity, error, context|
|
37
|
-
context = "\n\n"
|
38
|
-
{
|
39
|
-
|
37
|
+
context = "\n\n#{context}" if context
|
38
|
+
{
|
39
|
+
path: file,
|
40
|
+
message: "#{error}#{context}".strip,
|
41
|
+
position: (line || 0).to_i,
|
42
|
+
severity: SEVERITY_MAP[severity],
|
43
|
+
source: "androidlint"
|
44
|
+
}
|
40
45
|
}.compact
|
41
46
|
end
|
42
47
|
end
|
@@ -14,7 +14,7 @@ module Gergich
|
|
14
14
|
def run(output)
|
15
15
|
# See brakeman_example.json for sample output.
|
16
16
|
JSON.parse(output)["warnings"].map { |warning|
|
17
|
-
message = "
|
17
|
+
message = "#{warning['warning_type']}: #{warning['message']}"
|
18
18
|
message += "\n Code: #{warning['code']}" if warning["code"]
|
19
19
|
message += "\n User Input: #{warning['user_input']}" if warning["user_input"]
|
20
20
|
message += "\n See: #{warning['link']}" if warning["link"]
|
@@ -22,7 +22,8 @@ module Gergich
|
|
22
22
|
path: warning["file"],
|
23
23
|
position: warning["line"] || 0,
|
24
24
|
message: message,
|
25
|
-
severity: SEVERITY_MAP[warning["confidence"]]
|
25
|
+
severity: SEVERITY_MAP[warning["confidence"]],
|
26
|
+
source: "brakeman"
|
26
27
|
}
|
27
28
|
}.compact
|
28
29
|
end
|
@@ -16,7 +16,8 @@ module Gergich
|
|
16
16
|
output.scan(pattern).map { |file, errors|
|
17
17
|
errors.scan(error_pattern).map { |line, severity, error|
|
18
18
|
severity = SEVERITY_MAP[severity]
|
19
|
-
{ path: file, message: "
|
19
|
+
{ path: file, message: error, source: "eslint", position: line.to_i,
|
20
|
+
severity: severity }
|
20
21
|
}
|
21
22
|
}.compact.flatten
|
22
23
|
end
|
@@ -16,7 +16,7 @@ module Gergich
|
|
16
16
|
line = Regexp.last_match[1]
|
17
17
|
""
|
18
18
|
end
|
19
|
-
{ path: file, message: "
|
19
|
+
{ path: file, message: error, source: "i18n", position: line.to_i, severity: "error" }
|
20
20
|
}.compact
|
21
21
|
end
|
22
22
|
end
|
@@ -49,15 +49,31 @@ module Gergich
|
|
49
49
|
# if there is code context at the end, separate it and indent it
|
50
50
|
# so that gerrit preserves formatting
|
51
51
|
if /(?<context>[^\n]+\n *\^+\n)/m =~ message
|
52
|
-
message.sub!(context, "\n
|
52
|
+
message.sub!(context, "\n#{context.gsub(/^/, ' ')}")
|
53
53
|
end
|
54
|
+
match = message.match(
|
55
|
+
%r{
|
56
|
+
\A
|
57
|
+
(?<corrected>\[Corrected\]\s)?
|
58
|
+
(?<correctable>\[Correctable\]\s)?
|
59
|
+
(?:(?<cop>[A-Za-z/]+):\s)?
|
60
|
+
(?<message>.*)
|
61
|
+
\z
|
62
|
+
}mx
|
63
|
+
)
|
54
64
|
|
65
|
+
# rubocop:disable Style/DoubleNegation
|
55
66
|
messages << {
|
56
67
|
path: file,
|
57
68
|
position: line.to_i,
|
58
|
-
message:
|
59
|
-
|
69
|
+
message: match[:message],
|
70
|
+
rule: match[:cop],
|
71
|
+
corrected: !!match[:corrected],
|
72
|
+
correctable: !!match[:correctable],
|
73
|
+
severity: SEVERITY_MAP[severity],
|
74
|
+
source: "rubocop"
|
60
75
|
}
|
76
|
+
# rubocop:enable Style/DoubleNegation
|
61
77
|
end
|
62
78
|
|
63
79
|
messages
|
@@ -6,7 +6,6 @@ module Gergich
|
|
6
6
|
# stylelint is a css linter
|
7
7
|
# https://github.com/stylelint/stylelint
|
8
8
|
#
|
9
|
-
# rubocop:disable Style/AsciiComments
|
10
9
|
# example full output:
|
11
10
|
# app/stylesheets/base/_print.scss
|
12
11
|
# 3:17 ✖ Unexpected invalid hex color "#owiehfi" color-no-invalid-hex
|
@@ -16,8 +15,6 @@ module Gergich
|
|
16
15
|
# 2:15 ✖ Unexpected invalid hex color "#2D3B4" color-no-invalid-hex
|
17
16
|
# 30:15 ⚠ Expected "#2d3b4a" to be "#2D3B4A" color-hex-case
|
18
17
|
|
19
|
-
MESSAGE_PREFIX = "[stylelint]"
|
20
|
-
|
21
18
|
SEVERITY_MAP = {
|
22
19
|
"✖" => "error",
|
23
20
|
"⚠" => "warn",
|
@@ -31,7 +28,6 @@ module Gergich
|
|
31
28
|
# example error line:
|
32
29
|
# 1:15 ✖ Unexpected invalid hex color "#2D3B4" color-no-invalid-hex
|
33
30
|
ERROR_PATTERN = /^\s+(\d+):\d+\s+(✖|⚠|ℹ)\s+(.*?)\s\s+[^\n]+\n/.freeze
|
34
|
-
# rubocop:enable Style/AsciiComments
|
35
31
|
|
36
32
|
PATTERN = /#{FILE_PATH_PATTERN}((#{ERROR_PATTERN})+)/.freeze
|
37
33
|
|
@@ -41,7 +37,8 @@ module Gergich
|
|
41
37
|
severity = SEVERITY_MAP[severity]
|
42
38
|
{
|
43
39
|
path: file,
|
44
|
-
message:
|
40
|
+
message: error,
|
41
|
+
source: "stylelint",
|
45
42
|
position: line.to_i,
|
46
43
|
severity: severity
|
47
44
|
}
|
@@ -24,7 +24,7 @@ module Gergich
|
|
24
24
|
/mx
|
25
25
|
|
26
26
|
output.scan(pattern).map { |file, line, severity, error, _context|
|
27
|
-
{ path: file, message: "
|
27
|
+
{ path: file, message: error, source: "swiftlint",
|
28
28
|
position: line.to_i, severity: SEVERITY_MAP[severity] }
|
29
29
|
}.compact
|
30
30
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Gergich
|
4
|
+
module Capture
|
5
|
+
class TscCapture < BaseCapture
|
6
|
+
def run(output)
|
7
|
+
pattern = /([^(\n]+)\((\d+),(\d+)\): (\w+) (\w+): (.*(\n .*)*)/
|
8
|
+
|
9
|
+
output.scan(pattern).map { |file, line, pos, severity, code, error|
|
10
|
+
{
|
11
|
+
path: file,
|
12
|
+
message: error,
|
13
|
+
source: "tsc",
|
14
|
+
rule: code,
|
15
|
+
position: {
|
16
|
+
start_line: line.to_i,
|
17
|
+
start_position: pos.to_i,
|
18
|
+
end_line: line.to_i,
|
19
|
+
end_position: pos.to_i
|
20
|
+
},
|
21
|
+
severity: severity
|
22
|
+
}
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -9,14 +9,20 @@ module Gergich
|
|
9
9
|
# e.g. " 9:5 error string value redundantly (quoted-strings)"
|
10
10
|
error_pattern = %r{\s\s+(\d+):\d+\s+(\w+)\s+(.*?)\s+\([\w/-]+\)\n}
|
11
11
|
pattern = %r{ # Example:
|
12
|
-
|
12
|
+
^./([^\n]+)\n # ./api/config/lti/development/config.yml
|
13
13
|
((#{error_pattern})+) # 9:5 error string value redundantly (quoted-strings)
|
14
14
|
}mx
|
15
15
|
|
16
16
|
output.scan(pattern).map { |file, errors|
|
17
17
|
errors.scan(error_pattern).map { |line, severity, error|
|
18
18
|
severity = SEVERITY_MAP[severity]
|
19
|
-
{
|
19
|
+
{
|
20
|
+
path: file,
|
21
|
+
message: error,
|
22
|
+
source: "yamllint",
|
23
|
+
position: line.to_i,
|
24
|
+
severity: severity
|
25
|
+
}
|
20
26
|
}
|
21
27
|
}.compact.flatten
|
22
28
|
end
|
data/lib/gergich/capture.rb
CHANGED
@@ -7,6 +7,7 @@ module Gergich
|
|
7
7
|
module Capture
|
8
8
|
class BaseCapture
|
9
9
|
def self.inherited(subclass)
|
10
|
+
super
|
10
11
|
name = normalize_captor_class_name(subclass)
|
11
12
|
Capture.captors[name] = subclass
|
12
13
|
end
|
@@ -38,8 +39,14 @@ module Gergich
|
|
38
39
|
comments.each do |comment|
|
39
40
|
next if skip_paths.any? { |path| comment[:path].start_with?(path) }
|
40
41
|
|
41
|
-
|
42
|
-
|
42
|
+
message = +"[#{comment[:source]}] "
|
43
|
+
message << "#{comment[:rule]}: " if comment[:rule]
|
44
|
+
message << comment[:message]
|
45
|
+
|
46
|
+
draft.add_comment comment[:path],
|
47
|
+
comment[:position],
|
48
|
+
message,
|
49
|
+
comment[:severity]
|
43
50
|
end
|
44
51
|
end
|
45
52
|
|
@@ -47,7 +54,7 @@ module Gergich
|
|
47
54
|
end
|
48
55
|
|
49
56
|
def base_path
|
50
|
-
@base_path ||= File.expand_path(GERGICH_GIT_PATH)
|
57
|
+
@base_path ||= "#{File.expand_path(GERGICH_GIT_PATH)}/"
|
51
58
|
end
|
52
59
|
|
53
60
|
def relativize(path)
|
@@ -75,7 +82,7 @@ module Gergich
|
|
75
82
|
$stdout.puts line unless suppress_output
|
76
83
|
output << line
|
77
84
|
end
|
78
|
-
output.join
|
85
|
+
output.join
|
79
86
|
end
|
80
87
|
|
81
88
|
def load_captor(format)
|
@@ -109,4 +116,4 @@ module Gergich
|
|
109
116
|
end
|
110
117
|
end
|
111
118
|
|
112
|
-
Dir[File.dirname(__FILE__)
|
119
|
+
Dir["#{File.dirname(__FILE__)}/capture/*.rb"].sort.each { |file| require file }
|
data/lib/gergich/cli/gergich.rb
CHANGED
@@ -9,7 +9,9 @@ CI_TEST_ARGS = {
|
|
9
9
|
{ path: "foo.rb", position: 3, severity: "error", message: "ಠ_ಠ" },
|
10
10
|
{ path: "/COMMIT_MSG", position: 1, severity: "info", message: "cool story bro" },
|
11
11
|
{ path: "/COMMIT_MSG", severity: "info", message: "lol",
|
12
|
-
position: { start_line: 1, start_character: 1, end_line: 1, end_character: 2 } }
|
12
|
+
position: { start_line: 1, start_character: 1, end_line: 1, end_character: 2 } },
|
13
|
+
{ path: "/COMMIT_MSG", severity: "info", message: "more",
|
14
|
+
position: { start_line: 1, start_character: 5, end_line: 1, end_character: 5 } }
|
13
15
|
].to_json
|
14
16
|
],
|
15
17
|
"label" => ["Code-Review", 1],
|
@@ -41,7 +43,7 @@ def run_ci_test!(all_commands)
|
|
41
43
|
|
42
44
|
commands.each do |command, args = []|
|
43
45
|
arglist = args.map { |arg| Shellwords.escape(arg.to_s) }
|
44
|
-
output = `
|
46
|
+
output = `bundle exec gergich #{command} #{arglist.join(" ")} 2>&1`
|
45
47
|
unless $CHILD_STATUS.success?
|
46
48
|
error "`gergich citest` failed on step `#{command}`:\n\n#{output.gsub(/^/, ' ')}\n"
|
47
49
|
end
|
@@ -109,8 +111,8 @@ commands["comment"] = {
|
|
109
111
|
action: ->(comment_data) {
|
110
112
|
comment_data = begin
|
111
113
|
JSON.parse(comment_data)
|
112
|
-
|
113
|
-
|
114
|
+
rescue JSON::ParserError
|
115
|
+
error("Unable to parse <comment_data> json", "comment")
|
114
116
|
end
|
115
117
|
comment_data = [comment_data] unless comment_data.is_a?(Array)
|
116
118
|
|
@@ -210,6 +212,7 @@ commands["capture"] = {
|
|
210
212
|
* i18nliner
|
211
213
|
* flake8
|
212
214
|
* stylelint
|
215
|
+
* tsc
|
213
216
|
* yamllint
|
214
217
|
* custom:<path>:<class_name> - file path and ruby
|
215
218
|
class_name of a custom formatter.
|
@@ -15,11 +15,10 @@ ERROR_DISTANCE = ENV.fetch("MASTER_BOUNCER_ERROR_DISTANCE", 100).to_i
|
|
15
15
|
|
16
16
|
def potentially_mergeable_changes
|
17
17
|
url = "/changes/?q=status:open+" \
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
"&o=CURRENT_REVISION"
|
18
|
+
"p:#{PROJECT}+" \
|
19
|
+
"label:Verified=1+" \
|
20
|
+
"branch:master" \
|
21
|
+
"&o=CURRENT_REVISION"
|
23
22
|
changes = Gergich::API.get(url)
|
24
23
|
changes.reject { |c| c["subject"] =~ /\Awip($|\W)/i }
|
25
24
|
end
|
@@ -62,7 +61,7 @@ def maybe_bounce_commit!(commit)
|
|
62
61
|
# similarly, over time the same patchset will become more out of date,
|
63
62
|
# so we allow_repost (so to speak) so we can add increasingly negative
|
64
63
|
# reviews
|
65
|
-
review.publish!(:
|
64
|
+
review.publish!(allow_repost: true)
|
66
65
|
end
|
67
66
|
|
68
67
|
commands = {}
|
data/lib/gergich/cli.rb
CHANGED
data/lib/gergich.rb
CHANGED
@@ -51,15 +51,13 @@ module Gergich
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def files
|
54
|
-
@files ||=
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
.flatten
|
62
|
-
end
|
54
|
+
@files ||= if Gergich.use_git?
|
55
|
+
Gergich.git("diff-tree --no-commit-id --name-only -r #{ref}").split
|
56
|
+
else
|
57
|
+
raw = API.get("/changes/#{change_id}/revisions/#{revision_id}/patch", raw: true)
|
58
|
+
Base64.decode64(raw)
|
59
|
+
.scan(%r{^diff --git a/.*? b/(.*?)$})
|
60
|
+
.flatten
|
63
61
|
end
|
64
62
|
end
|
65
63
|
|
@@ -70,7 +68,7 @@ module Gergich
|
|
70
68
|
def revision_number
|
71
69
|
@revision_number ||= begin
|
72
70
|
patchset_number = ENV["GERRIT_PATCHSET_NUMBER"]
|
73
|
-
return patchset_number unless patchset_number.nil?
|
71
|
+
return patchset_number unless patchset_number.nil? # rubocop:disable Lint/NoReturnInBeginEndBlocks
|
74
72
|
|
75
73
|
gerrit_info = API.get("/changes/?q=#{change_id}&o=ALL_REVISIONS")[0]
|
76
74
|
raise GergichError, "Gerrit patchset not found" unless gerrit_info
|
@@ -97,7 +95,7 @@ module Gergich
|
|
97
95
|
end
|
98
96
|
|
99
97
|
# Public: publish all draft comments/labels/messages
|
100
|
-
def publish!(allow_repost
|
98
|
+
def publish!(allow_repost: false)
|
101
99
|
# only publish if we have something to say or if our last score was negative
|
102
100
|
return unless anything_to_publish?
|
103
101
|
|
@@ -200,13 +198,11 @@ module Gergich
|
|
200
198
|
# currently, cover message only supports the GERGICH_REVIEW_LABEL.
|
201
199
|
# i.e., even if gergich has "Code-Review: -2"
|
202
200
|
def current_label
|
203
|
-
@current_label ||=
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
.first
|
209
|
-
end
|
201
|
+
@current_label ||= API.get("/changes/#{commit.change_id}/detail")["labels"]
|
202
|
+
.fetch(GERGICH_REVIEW_LABEL, {})
|
203
|
+
.fetch("all", [])
|
204
|
+
.select { |label| label["username"] == GERGICH_USER }
|
205
|
+
.first
|
210
206
|
end
|
211
207
|
|
212
208
|
def current_label_date
|
@@ -232,7 +228,7 @@ module Gergich
|
|
232
228
|
end
|
233
229
|
|
234
230
|
def current_score
|
235
|
-
current_label && current_label["value"] || 0
|
231
|
+
(current_label && current_label["value"]) || 0
|
236
232
|
end
|
237
233
|
|
238
234
|
def cover_message
|
@@ -314,7 +310,7 @@ module Gergich
|
|
314
310
|
def base_uri
|
315
311
|
@base_uri ||= \
|
316
312
|
ENV["GERRIT_BASE_URL"] ||
|
317
|
-
ENV.key?("GERRIT_HOST") && "https://#{ENV['GERRIT_HOST']}" ||
|
313
|
+
(ENV.key?("GERRIT_HOST") && "https://#{ENV['GERRIT_HOST']}") ||
|
318
314
|
raise(GergichError, "need to set GERRIT_BASE_URL or GERRIT_HOST")
|
319
315
|
end
|
320
316
|
|
@@ -338,7 +334,7 @@ module Gergich
|
|
338
334
|
|
339
335
|
def prepare_options(options)
|
340
336
|
options = {
|
341
|
-
base_uri: base_uri
|
337
|
+
base_uri: "#{base_uri}/a"
|
342
338
|
}.merge(auth_config).merge(options)
|
343
339
|
if options[:body]
|
344
340
|
options[:headers] ||= {}
|
@@ -515,7 +511,7 @@ module Gergich
|
|
515
511
|
|
516
512
|
def info
|
517
513
|
@info ||= begin
|
518
|
-
comments =
|
514
|
+
comments = inline_comments.map { |file| [file.path, file.to_a] }.to_h
|
519
515
|
|
520
516
|
{
|
521
517
|
comments: comments,
|
@@ -533,9 +529,9 @@ module Gergich
|
|
533
529
|
|
534
530
|
def orphaned_message
|
535
531
|
messages = ["NOTE: I couldn't create inline comments for everything. " \
|
536
|
-
|
537
|
-
|
538
|
-
|
532
|
+
"Although this isn't technically part of your commit, you " \
|
533
|
+
"should still check it out (i.e. side effects or auto-" \
|
534
|
+
"generated from stuff you *did* change):"]
|
539
535
|
|
540
536
|
other_comments.each do |file|
|
541
537
|
file.comments.each do |position, comments|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gergich
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Jensen
|
8
|
-
autorequire:
|
9
|
-
bindir:
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -86,28 +86,56 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: '1.21'
|
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
|
-
version:
|
96
|
+
version: '1.21'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop-rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.6'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.6'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop-rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '2.5'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '2.5'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: simplecov
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - "~>"
|
102
130
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
131
|
+
version: 0.21.2
|
104
132
|
type: :development
|
105
133
|
prerelease: false
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
107
135
|
requirements:
|
108
136
|
- - "~>"
|
109
137
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
138
|
+
version: 0.21.2
|
111
139
|
description: Gergich is a little command-line tool for wiring up linters to Gerrit
|
112
140
|
so you can get nice inline comments right on the review
|
113
141
|
email: jon@instructure.com
|
@@ -117,12 +145,8 @@ executables:
|
|
117
145
|
extensions: []
|
118
146
|
extra_rdoc_files: []
|
119
147
|
files:
|
120
|
-
-
|
121
|
-
-
|
122
|
-
- bin/check_coverage
|
123
|
-
- bin/gergich
|
124
|
-
- bin/master_bouncer
|
125
|
-
- bin/run_tests.sh
|
148
|
+
- exe/gergich
|
149
|
+
- exe/master_bouncer
|
126
150
|
- lib/gergich.rb
|
127
151
|
- lib/gergich/capture.rb
|
128
152
|
- lib/gergich/capture/androidlint_capture.rb
|
@@ -134,30 +158,16 @@ files:
|
|
134
158
|
- lib/gergich/capture/shellcheck_capture.rb
|
135
159
|
- lib/gergich/capture/stylelint_capture.rb
|
136
160
|
- lib/gergich/capture/swiftlint_capture.rb
|
161
|
+
- lib/gergich/capture/tsc_capture.rb
|
137
162
|
- lib/gergich/capture/yamllint_capture.rb
|
138
163
|
- lib/gergich/cli.rb
|
139
164
|
- lib/gergich/cli/gergich.rb
|
140
165
|
- lib/gergich/cli/master_bouncer.rb
|
141
|
-
- spec/gergich/capture/androidlint_capture_spec.rb
|
142
|
-
- spec/gergich/capture/brakeman_capture_spec.rb
|
143
|
-
- spec/gergich/capture/custom_capture_spec.rb
|
144
|
-
- spec/gergich/capture/eslint_capture_spec.rb
|
145
|
-
- spec/gergich/capture/flake8_capture_spec.rb
|
146
|
-
- spec/gergich/capture/i18nliner_capture_spec.rb
|
147
|
-
- spec/gergich/capture/rubocop_capture_spec.rb
|
148
|
-
- spec/gergich/capture/shellcheck_capture_spec.rb
|
149
|
-
- spec/gergich/capture/stylelint_capture_spec.rb
|
150
|
-
- spec/gergich/capture/swiftlint_capture_spec.rb
|
151
|
-
- spec/gergich/capture/yamllint_capture_spec.rb
|
152
|
-
- spec/gergich/capture_spec.rb
|
153
|
-
- spec/gergich_spec.rb
|
154
|
-
- spec/spec_helper.rb
|
155
|
-
- spec/support/capture_shared_examples.rb
|
156
166
|
homepage: https://github.com/instructure/gergich
|
157
167
|
licenses:
|
158
168
|
- MIT
|
159
169
|
metadata: {}
|
160
|
-
post_install_message:
|
170
|
+
post_install_message:
|
161
171
|
rdoc_options: []
|
162
172
|
require_paths:
|
163
173
|
- lib
|
@@ -165,15 +175,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
165
175
|
requirements:
|
166
176
|
- - ">="
|
167
177
|
- !ruby/object:Gem::Version
|
168
|
-
version: 2.
|
178
|
+
version: '2.5'
|
169
179
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
180
|
requirements:
|
171
181
|
- - ">="
|
172
182
|
- !ruby/object:Gem::Version
|
173
183
|
version: '0'
|
174
184
|
requirements: []
|
175
|
-
rubygems_version: 3.
|
176
|
-
signing_key:
|
185
|
+
rubygems_version: 3.1.6
|
186
|
+
signing_key:
|
177
187
|
specification_version: 4
|
178
188
|
summary: Command-line tool for adding Gerrit comments
|
179
189
|
test_files: []
|
data/LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2015-2016 Instructure, Inc.
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|