danger 0.7.4 → 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 +4 -4
- data/README.md +28 -23
- data/lib/danger.rb +3 -4
- data/lib/danger/ci_source/circle.rb +1 -1
- data/lib/danger/{circle_api.rb → ci_source/circle_api.rb} +0 -0
- data/lib/danger/ci_source/drone.rb +18 -0
- data/lib/danger/ci_source/semaphore.rb +18 -0
- data/lib/danger/commands/local.rb +19 -10
- data/lib/danger/commands/runner.rb +30 -18
- data/lib/danger/comment_generators/github.md.erb +1 -1
- data/lib/danger/{scm_source → core_ext}/file_list.rb +1 -0
- data/lib/danger/danger_core/dangerfile.rb +217 -0
- data/lib/danger/danger_core/dangerfile_dsl.rb +29 -0
- data/lib/danger/{environment_manager.rb → danger_core/environment_manager.rb} +14 -6
- data/lib/danger/danger_core/plugins/dangerfile_git_plugin.rb +69 -0
- data/lib/danger/danger_core/plugins/dangerfile_github_plugin.rb +68 -0
- data/lib/danger/danger_core/plugins/dangerfile_import_plugin.rb +58 -0
- data/lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb +87 -0
- data/lib/danger/{standard_error.rb → danger_core/standard_error.rb} +1 -1
- data/lib/danger/{violation.rb → danger_core/violation.rb} +0 -0
- data/lib/danger/plugin_support/plugin.rb +31 -0
- data/lib/danger/plugin_support/plugin_parser.rb +70 -0
- data/lib/danger/{request_sources → request_source}/github.rb +2 -33
- data/lib/danger/scm_source/git_repo.rb +1 -30
- data/lib/danger/version.rb +1 -1
- metadata +79 -17
- data/lib/danger/available_values.rb +0 -29
- data/lib/danger/dangerfile.rb +0 -123
- data/lib/danger/dangerfile_dsl.rb +0 -159
- data/lib/danger/plugin.rb +0 -25
- data/lib/danger/plugins/protect_files.rb +0 -34
@@ -4,7 +4,7 @@ require 'redcarpet'
|
|
4
4
|
|
5
5
|
module Danger
|
6
6
|
class GitHub
|
7
|
-
attr_accessor :ci_source, :pr_json, :issue_json, :environment, :
|
7
|
+
attr_accessor :ci_source, :pr_json, :issue_json, :environment, :support_tokenless_auth, :ignored_violations, :github_host
|
8
8
|
|
9
9
|
def initialize(ci_source, environment)
|
10
10
|
self.ci_source = ci_source
|
@@ -21,10 +21,7 @@ module Danger
|
|
21
21
|
|
22
22
|
def client
|
23
23
|
raise "No API token given, please provide one using `DANGER_GITHUB_API_TOKEN`" if !@token && !support_tokenless_auth
|
24
|
-
|
25
|
-
@client ||= Octokit::Client.new(
|
26
|
-
access_token: @token
|
27
|
-
)
|
24
|
+
@client ||= Octokit::Client.new(access_token: @token)
|
28
25
|
end
|
29
26
|
|
30
27
|
def markdown_parser
|
@@ -48,34 +45,6 @@ module Danger
|
|
48
45
|
self.issue_json = client.get(href)
|
49
46
|
end
|
50
47
|
|
51
|
-
def base_commit
|
52
|
-
self.pr_json[:base][:sha]
|
53
|
-
end
|
54
|
-
|
55
|
-
def head_commit
|
56
|
-
self.pr_json[:head][:sha]
|
57
|
-
end
|
58
|
-
|
59
|
-
def branch_for_merge
|
60
|
-
self.pr_json[:base][:ref]
|
61
|
-
end
|
62
|
-
|
63
|
-
def pr_title
|
64
|
-
self.pr_json[:title].to_s
|
65
|
-
end
|
66
|
-
|
67
|
-
def pr_body
|
68
|
-
self.pr_json[:body].to_s
|
69
|
-
end
|
70
|
-
|
71
|
-
def pr_author
|
72
|
-
self.pr_json[:user][:login].to_s
|
73
|
-
end
|
74
|
-
|
75
|
-
def pr_labels
|
76
|
-
self.issue_json[:labels].map { |l| l[:name] }
|
77
|
-
end
|
78
|
-
|
79
48
|
# Sending data to GitHub
|
80
49
|
def update_pull_request!(warnings: [], errors: [], messages: [], markdowns: [])
|
81
50
|
comment_result = {}
|
@@ -4,8 +4,7 @@ require 'git'
|
|
4
4
|
|
5
5
|
module Danger
|
6
6
|
class GitRepo
|
7
|
-
attr_accessor :diff
|
8
|
-
attr_accessor :log
|
7
|
+
attr_accessor :diff, :log
|
9
8
|
|
10
9
|
def diff_for_folder(folder, from: "master", to: 'HEAD')
|
11
10
|
repo = Git.open folder
|
@@ -16,33 +15,5 @@ module Danger
|
|
16
15
|
def exec(string)
|
17
16
|
`git #{string}`.strip
|
18
17
|
end
|
19
|
-
|
20
|
-
def added_files
|
21
|
-
Danger::FileList.new(@diff.select { |diff| diff.type == "new" }.map(&:path))
|
22
|
-
end
|
23
|
-
|
24
|
-
def deleted_files
|
25
|
-
Danger::FileList.new(@diff.select { |diff| diff.type == "deleted" }.map(&:path))
|
26
|
-
end
|
27
|
-
|
28
|
-
def modified_files
|
29
|
-
Danger::FileList.new(@diff.stats[:files].keys)
|
30
|
-
end
|
31
|
-
|
32
|
-
def lines_of_code
|
33
|
-
@diff.lines
|
34
|
-
end
|
35
|
-
|
36
|
-
def deletions
|
37
|
-
@diff.deletions
|
38
|
-
end
|
39
|
-
|
40
|
-
def insertions
|
41
|
-
@diff.insertions
|
42
|
-
end
|
43
|
-
|
44
|
-
def commits
|
45
|
-
log.to_a
|
46
|
-
end
|
47
18
|
end
|
48
19
|
end
|
data/lib/danger/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Orta Therox
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-06-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: claide
|
@@ -166,19 +166,19 @@ dependencies:
|
|
166
166
|
- !ruby/object:Gem::Version
|
167
167
|
version: '0'
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
|
-
name:
|
169
|
+
name: pry
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
172
|
- - ">="
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
174
|
+
version: '0'
|
175
175
|
type: :development
|
176
176
|
prerelease: false
|
177
177
|
version_requirements: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
179
179
|
- - ">="
|
180
180
|
- !ruby/object:Gem::Version
|
181
|
-
version:
|
181
|
+
version: '0'
|
182
182
|
- !ruby/object:Gem::Dependency
|
183
183
|
name: rubocop
|
184
184
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,6 +193,62 @@ dependencies:
|
|
193
193
|
- - "~>"
|
194
194
|
- !ruby/object:Gem::Version
|
195
195
|
version: 0.38.0
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
name: yard
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - ">="
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
type: :development
|
204
|
+
prerelease: false
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - ">="
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '0'
|
210
|
+
- !ruby/object:Gem::Dependency
|
211
|
+
name: listen
|
212
|
+
requirement: !ruby/object:Gem::Requirement
|
213
|
+
requirements:
|
214
|
+
- - '='
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
version: 3.0.7
|
217
|
+
type: :development
|
218
|
+
prerelease: false
|
219
|
+
version_requirements: !ruby/object:Gem::Requirement
|
220
|
+
requirements:
|
221
|
+
- - '='
|
222
|
+
- !ruby/object:Gem::Version
|
223
|
+
version: 3.0.7
|
224
|
+
- !ruby/object:Gem::Dependency
|
225
|
+
name: guard
|
226
|
+
requirement: !ruby/object:Gem::Requirement
|
227
|
+
requirements:
|
228
|
+
- - ">="
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
version: '0'
|
231
|
+
type: :development
|
232
|
+
prerelease: false
|
233
|
+
version_requirements: !ruby/object:Gem::Requirement
|
234
|
+
requirements:
|
235
|
+
- - ">="
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0'
|
238
|
+
- !ruby/object:Gem::Dependency
|
239
|
+
name: guard-rspec
|
240
|
+
requirement: !ruby/object:Gem::Requirement
|
241
|
+
requirements:
|
242
|
+
- - ">="
|
243
|
+
- !ruby/object:Gem::Version
|
244
|
+
version: '0'
|
245
|
+
type: :development
|
246
|
+
prerelease: false
|
247
|
+
version_requirements: !ruby/object:Gem::Requirement
|
248
|
+
requirements:
|
249
|
+
- - ">="
|
250
|
+
- !ruby/object:Gem::Version
|
251
|
+
version: '0'
|
196
252
|
description: Create a Dangerfile to introspect your pull request in CI, makes it easy
|
197
253
|
to enforce social conventions like changelogs and tests.
|
198
254
|
email:
|
@@ -209,33 +265,38 @@ files:
|
|
209
265
|
- lib/assets/DangerfileTemplate
|
210
266
|
- lib/assets/PluginTemplate.rb.template
|
211
267
|
- lib/danger.rb
|
212
|
-
- lib/danger/available_values.rb
|
213
268
|
- lib/danger/ci_source/buildkite.rb
|
214
269
|
- lib/danger/ci_source/ci_source.rb
|
215
270
|
- lib/danger/ci_source/circle.rb
|
271
|
+
- lib/danger/ci_source/circle_api.rb
|
272
|
+
- lib/danger/ci_source/drone.rb
|
216
273
|
- lib/danger/ci_source/jenkins.rb
|
217
274
|
- lib/danger/ci_source/local_git_repo.rb
|
275
|
+
- lib/danger/ci_source/semaphore.rb
|
218
276
|
- lib/danger/ci_source/travis.rb
|
219
277
|
- lib/danger/ci_source/xcode_server.rb
|
220
|
-
- lib/danger/circle_api.rb
|
221
278
|
- lib/danger/commands/init.rb
|
222
279
|
- lib/danger/commands/init_helpers/interviewer.rb
|
223
280
|
- lib/danger/commands/local.rb
|
224
281
|
- lib/danger/commands/new_plugin.rb
|
225
282
|
- lib/danger/commands/runner.rb
|
226
283
|
- lib/danger/comment_generators/github.md.erb
|
284
|
+
- lib/danger/core_ext/file_list.rb
|
227
285
|
- lib/danger/core_ext/string.rb
|
228
|
-
- lib/danger/dangerfile.rb
|
229
|
-
- lib/danger/dangerfile_dsl.rb
|
230
|
-
- lib/danger/environment_manager.rb
|
231
|
-
- lib/danger/
|
232
|
-
- lib/danger/plugins/
|
233
|
-
- lib/danger/
|
234
|
-
- lib/danger/
|
286
|
+
- lib/danger/danger_core/dangerfile.rb
|
287
|
+
- lib/danger/danger_core/dangerfile_dsl.rb
|
288
|
+
- lib/danger/danger_core/environment_manager.rb
|
289
|
+
- lib/danger/danger_core/plugins/dangerfile_git_plugin.rb
|
290
|
+
- lib/danger/danger_core/plugins/dangerfile_github_plugin.rb
|
291
|
+
- lib/danger/danger_core/plugins/dangerfile_import_plugin.rb
|
292
|
+
- lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb
|
293
|
+
- lib/danger/danger_core/standard_error.rb
|
294
|
+
- lib/danger/danger_core/violation.rb
|
295
|
+
- lib/danger/plugin_support/plugin.rb
|
296
|
+
- lib/danger/plugin_support/plugin_parser.rb
|
297
|
+
- lib/danger/request_source/github.rb
|
235
298
|
- lib/danger/scm_source/git_repo.rb
|
236
|
-
- lib/danger/standard_error.rb
|
237
299
|
- lib/danger/version.rb
|
238
|
-
- lib/danger/violation.rb
|
239
300
|
homepage: http://github.com/danger/danger
|
240
301
|
licenses:
|
241
302
|
- MIT
|
@@ -256,8 +317,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
317
|
version: '0'
|
257
318
|
requirements: []
|
258
319
|
rubyforge_project:
|
259
|
-
rubygems_version: 2.
|
320
|
+
rubygems_version: 2.2.2
|
260
321
|
signing_key:
|
261
322
|
specification_version: 4
|
262
323
|
summary: Automate your PR etiquette.
|
263
324
|
test_files: []
|
325
|
+
has_rdoc:
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Danger
|
2
|
-
# Defines all the values that should be available in someone's Dangerfile
|
3
|
-
class AvailableValues
|
4
|
-
def self.all
|
5
|
-
self.scm + self.request_source
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.scm
|
9
|
-
[
|
10
|
-
:lines_of_code,
|
11
|
-
:modified_files,
|
12
|
-
:deleted_files,
|
13
|
-
:added_files,
|
14
|
-
:deletions,
|
15
|
-
:insertions,
|
16
|
-
:commits
|
17
|
-
]
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.request_source
|
21
|
-
[
|
22
|
-
:pr_title,
|
23
|
-
:pr_body,
|
24
|
-
:pr_author,
|
25
|
-
:pr_labels
|
26
|
-
]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/lib/danger/dangerfile.rb
DELETED
@@ -1,123 +0,0 @@
|
|
1
|
-
# So much was ripped direct from CocoaPods-Core - thanks!
|
2
|
-
|
3
|
-
require 'danger/dangerfile_dsl'
|
4
|
-
require 'danger/standard_error'
|
5
|
-
|
6
|
-
module Danger
|
7
|
-
class Dangerfile
|
8
|
-
include Danger::Dangerfile::DSL
|
9
|
-
|
10
|
-
attr_accessor :env, :warnings, :errors, :messages, :markdowns, :verbose
|
11
|
-
|
12
|
-
# @return [Pathname] the path where the Dangerfile was loaded from. It is nil
|
13
|
-
# if the Dangerfile was generated programmatically.
|
14
|
-
#
|
15
|
-
attr_accessor :defined_in_file
|
16
|
-
|
17
|
-
# @return [String] a string useful to represent the Dangerfile in a message
|
18
|
-
# presented to the user.
|
19
|
-
#
|
20
|
-
def to_s
|
21
|
-
'Dangerfile'
|
22
|
-
end
|
23
|
-
|
24
|
-
# Iterates through the DSL's attributes, and table's the output
|
25
|
-
def print_known_info
|
26
|
-
rows = []
|
27
|
-
|
28
|
-
AvailableValues.all.each do |key|
|
29
|
-
value = self.send(key)
|
30
|
-
value = value.scan(/.{,80}/).to_a.each(&:strip!).join("\n") if key == :pr_body
|
31
|
-
|
32
|
-
# So that we either have one value per row
|
33
|
-
# or we have [] for an empty array
|
34
|
-
value = value.join("\n") if value.kind_of?(Array) && value.count > 0
|
35
|
-
|
36
|
-
rows << [key.to_s, value]
|
37
|
-
end
|
38
|
-
|
39
|
-
rows << ["---", "---"]
|
40
|
-
rows << ["SCM", env.scm.class]
|
41
|
-
rows << ["Source", env.ci_source.class]
|
42
|
-
rows << ["Requests", env.request_source.class]
|
43
|
-
rows << ["Base Commit", env.meta_info_for_base]
|
44
|
-
rows << ["Head Commit", env.meta_info_for_head]
|
45
|
-
|
46
|
-
params = {}
|
47
|
-
params[:rows] = rows.each { |current| current[0] = current[0].yellow }
|
48
|
-
params[:title] = "Danger v#{Danger::VERSION}\nDSL Attributes".green
|
49
|
-
|
50
|
-
puts ""
|
51
|
-
puts Terminal::Table.new(params)
|
52
|
-
puts ""
|
53
|
-
end
|
54
|
-
|
55
|
-
# Parses the file at a path, optionally takes the content of the file for DI
|
56
|
-
#
|
57
|
-
def parse(path, contents = nil)
|
58
|
-
print_known_info if verbose
|
59
|
-
|
60
|
-
contents ||= File.open(path, 'r:utf-8', &:read)
|
61
|
-
|
62
|
-
# Work around for Rubinius incomplete encoding in 1.9 mode
|
63
|
-
if contents.respond_to?(:encoding) && contents.encoding.name != 'UTF-8'
|
64
|
-
contents.encode!('UTF-8')
|
65
|
-
end
|
66
|
-
|
67
|
-
if contents.tr!('“”‘’‛', %(""'''))
|
68
|
-
# Changes have been made
|
69
|
-
puts "Your #{path.basename} has had smart quotes sanitised. " \
|
70
|
-
'To avoid issues in the future, you should not use ' \
|
71
|
-
'TextEdit for editing it. If you are not using TextEdit, ' \
|
72
|
-
'you should turn off smart quotes in your editor of choice.'.red
|
73
|
-
end
|
74
|
-
|
75
|
-
if contents.include?("puts")
|
76
|
-
puts "You used `puts` in your Dangerfile. To print out text to GitHub use `message` instead"
|
77
|
-
end
|
78
|
-
|
79
|
-
self.defined_in_file = path
|
80
|
-
instance_eval do
|
81
|
-
# rubocop:disable Lint/RescueException
|
82
|
-
begin
|
83
|
-
# rubocop:disable Eval
|
84
|
-
eval(contents, nil, path.to_s)
|
85
|
-
# rubocop:enable Eval
|
86
|
-
rescue Exception => e
|
87
|
-
message = "Invalid `#{path.basename}` file: #{e.message}"
|
88
|
-
raise DSLError.new(message, path, e.backtrace, contents)
|
89
|
-
end
|
90
|
-
# rubocop:enable Lint/RescueException
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def print_results
|
95
|
-
return if (self.errors + self.warnings + self.messages + self.markdowns).count == 0
|
96
|
-
|
97
|
-
puts ""
|
98
|
-
puts "danger results:"
|
99
|
-
[:errors, :warnings, :messages].each do |current|
|
100
|
-
params = {}
|
101
|
-
params[:rows] = self.send(current).collect { |a| [a.message] }
|
102
|
-
next unless params[:rows].count > 0
|
103
|
-
params[:title] = case current
|
104
|
-
when :errors
|
105
|
-
current.to_s.capitalize.red
|
106
|
-
when :warnings
|
107
|
-
current.to_s.capitalize.yellow
|
108
|
-
else
|
109
|
-
current.to_s.capitalize
|
110
|
-
end
|
111
|
-
|
112
|
-
puts ""
|
113
|
-
puts Terminal::Table.new(params)
|
114
|
-
puts ""
|
115
|
-
end
|
116
|
-
|
117
|
-
puts "Markdown: ".green if self.markdowns.count > 0
|
118
|
-
self.markdowns.each do |current_markdown|
|
119
|
-
puts current_markdown
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
@@ -1,159 +0,0 @@
|
|
1
|
-
require 'danger/violation'
|
2
|
-
|
3
|
-
module Danger
|
4
|
-
class Dangerfile
|
5
|
-
module DSL
|
6
|
-
# @!group Enviroment
|
7
|
-
# @return [EnvironmentManager] Provides access to the raw Travis/Circle/Buildkite/GitHub
|
8
|
-
# objects, which you can use to pull out extra bits of information. _Warning_
|
9
|
-
# the api of these objects is **not** considered a part of the Dangerfile public
|
10
|
-
# API, and is viable to change occasionally on the whims of developers.
|
11
|
-
|
12
|
-
attr_reader :env
|
13
|
-
|
14
|
-
def initialize
|
15
|
-
self.warnings = []
|
16
|
-
self.errors = []
|
17
|
-
self.messages = []
|
18
|
-
self.markdowns = []
|
19
|
-
|
20
|
-
load_default_plugins
|
21
|
-
end
|
22
|
-
|
23
|
-
def import(path)
|
24
|
-
raise "`import` requires a string" unless path.kind_of?(String)
|
25
|
-
path += ".rb" unless path.end_with?(".rb")
|
26
|
-
|
27
|
-
if path.start_with?("http")
|
28
|
-
import_url(path)
|
29
|
-
else
|
30
|
-
import_local(path)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Download a remote plugin and use it locally
|
35
|
-
#
|
36
|
-
# @param [String] url
|
37
|
-
# https URL to the Ruby file to use
|
38
|
-
def import_url(url)
|
39
|
-
raise "URL is not https, for security reasons `danger` only supports encrypted requests" unless url.start_with?("https://")
|
40
|
-
|
41
|
-
require 'tmpdir'
|
42
|
-
require 'faraday'
|
43
|
-
require 'faraday_middleware'
|
44
|
-
|
45
|
-
@http_client ||= Faraday.new do |b|
|
46
|
-
b.use FaradayMiddleware::FollowRedirects
|
47
|
-
b.adapter :net_http
|
48
|
-
end
|
49
|
-
content = @http_client.get(url)
|
50
|
-
|
51
|
-
Dir.mktmpdir do |dir|
|
52
|
-
path = File.join(dir, "temporary_remote_action.rb")
|
53
|
-
File.write(path, content.body)
|
54
|
-
import_local(path)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
# Import one or more local plugins
|
59
|
-
#
|
60
|
-
# @param [String] path
|
61
|
-
# The path to the file to import
|
62
|
-
# Can also be a pattern (./**/*plugin.rb)
|
63
|
-
def import_local(path)
|
64
|
-
Dir[path].each do |file|
|
65
|
-
require File.expand_path(file) # without the expand_path it would fail if the path doesn't start with ./
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def should_ignore_violation(message)
|
70
|
-
env.request_source.ignored_violations.include? message
|
71
|
-
end
|
72
|
-
|
73
|
-
# Declares a CI blocking error
|
74
|
-
#
|
75
|
-
# @param [String] message
|
76
|
-
# The message to present to the user
|
77
|
-
# @param [Boolean] sticky
|
78
|
-
# Whether the message should be kept after it was fixed
|
79
|
-
def fail(message, sticky: true)
|
80
|
-
return if should_ignore_violation(message)
|
81
|
-
self.errors << Violation.new(message, sticky)
|
82
|
-
puts "Raising error '#{message}'"
|
83
|
-
end
|
84
|
-
|
85
|
-
# Specifies a problem, but not critical
|
86
|
-
#
|
87
|
-
# @param [String] message
|
88
|
-
# The message to present to the user
|
89
|
-
# @param [Boolean] sticky
|
90
|
-
# Whether the message should be kept after it was fixed
|
91
|
-
def warn(message, sticky: true)
|
92
|
-
return if should_ignore_violation(message)
|
93
|
-
self.warnings << Violation.new(message, sticky)
|
94
|
-
puts "Printing warning '#{message}'"
|
95
|
-
end
|
96
|
-
|
97
|
-
# Print out a generate message on the PR
|
98
|
-
#
|
99
|
-
# @param [String] message
|
100
|
-
# The message to present to the user
|
101
|
-
# @param [Boolean] sticky
|
102
|
-
# Whether the message should be kept after it was fixed
|
103
|
-
def message(message, sticky: true)
|
104
|
-
self.messages << Violation.new(message, sticky)
|
105
|
-
puts "Printing message '#{message}'"
|
106
|
-
end
|
107
|
-
|
108
|
-
# Print markdown to below the table
|
109
|
-
#
|
110
|
-
# @param [String] message
|
111
|
-
# The markdown based message to be printed below the table
|
112
|
-
def markdown(message)
|
113
|
-
self.markdowns << message
|
114
|
-
puts "Printing markdown #{message}"
|
115
|
-
end
|
116
|
-
|
117
|
-
# When an undefined method is called, we check to see if it's something
|
118
|
-
# that either the `scm` or the `request_source` can handle.
|
119
|
-
# This opens us up to letting those object extend themselves naturally.
|
120
|
-
# This will also look for plugins
|
121
|
-
def method_missing(method_sym, *arguments, &_block)
|
122
|
-
# SCM Source
|
123
|
-
if AvailableValues.scm.include?(method_sym)
|
124
|
-
return env.scm.send(method_sym)
|
125
|
-
end
|
126
|
-
|
127
|
-
# Request Source
|
128
|
-
if AvailableValues.request_source.include?(method_sym)
|
129
|
-
return env.request_source.send(method_sym)
|
130
|
-
end
|
131
|
-
|
132
|
-
# Plugins
|
133
|
-
class_name = method_sym.to_s.danger_class
|
134
|
-
if Danger::Dangerfile::DSL.const_defined?(class_name)
|
135
|
-
plugin_ref = Danger::Dangerfile::DSL.const_get(class_name)
|
136
|
-
if plugin_ref < Plugin
|
137
|
-
plugin_ref.new(self).run(*arguments)
|
138
|
-
else
|
139
|
-
raise "'#{method_sym}' is not a valid danger plugin".red
|
140
|
-
end
|
141
|
-
else
|
142
|
-
raise "Unknown method '#{method_sym}', please check out the documentation for available plugins".red
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
private
|
147
|
-
|
148
|
-
def load_default_plugins
|
149
|
-
Dir["./lib/danger/plugins/*.rb"].each do |file|
|
150
|
-
require File.expand_path(file)
|
151
|
-
end
|
152
|
-
|
153
|
-
Dir["./danger_plugins/*.rb"].each do |file|
|
154
|
-
require File.expand_path(file)
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|