5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/local_rules/plugin.rb', line 5
def check
diff = github.pr_diff
return if diff.nil?
failure_rules = rules['failure']
warning_rules = rules['warning']
return if failure_rules.nil? && warning_rules.nil?
if diff.match(Regexp.union(failure_rules.keys + warning_rules.keys))
regexp_to_fail = Regexp.union(failure_rules.keys)
regexp_to_warn = Regexp.union(warning_rules.keys)
GitDiffParser.parse(diff).each do |changed_file|
next if changed_file.file == '.danger_local_rules.yml'
changed_file.changed_lines.each do |changed_line|
content = changed_line.content
next unless content.start_with?('+')
if (content.match(regexp_to_fail))
content.match(regexp_to_fail) do |data|
fail(failure_rules[data[0]], file: changed_file.file, line: changed_line.number)
end
end
if (content.match(regexp_to_warn))
content.match(regexp_to_warn) do |data|
warn(warning_rules[data[0]], file: changed_file.file, line: changed_line.number)
end
end
end
end
end
end
|