Class: Danger::DangerfileMessagingPlugin
- Defined in:
- lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb
Overview
Provides the feedback mechanism for Danger. Danger can keep track of messages, warnings, failure and post arbitrary markdown into a comment.
The message within which Danger communicates back is amended on each run in a session.
Each of ‘message`, `warn` and `fail` have a `sticky` flag, `false` by default, which when `true` means that the message will be crossed out instead of being removed. If it’s not called again on subsequent runs.
Each of ‘message`, `warn`, `fail` and `markdown` support multiple passed arguments
By default, using ‘failure` would fail the corresponding build. Either via an API call, or via the return value for the danger command. Older code examples use `fail` which is an alias of `failure`, but the default Rubocop settings would have an issue with it.
You can optionally add ‘file` and `line` to provide inline feedback on a PR in GitHub, note that only feedback inside the PR’s diff will show up inline. Others will appear inside the main comment.
It is possible to have Danger ignore specific warnings or errors by writing ‘Danger: Ignore “[warning/error text]”`.
Sidenote: Messaging is the only plugin which adds functions to the root of the Dangerfile.
Core collapse
-
#fail(*failures, **options) ⇒ void
(also: #failure)
Declares a CI blocking error.
-
#markdown(*markdowns, **options) ⇒ void
Print markdown to below the table.
-
#message(*messages, **options) ⇒ void
Print out a generate message on the PR.
-
#warn(*warnings, **options) ⇒ void
Specifies a problem, but not critical.
Reporting collapse
-
#status_report ⇒ Hash
A list of all messages passed to Danger, including the markdowns.
-
#violation_report ⇒ Hash
A list of all violations passed to Danger, we don’t anticipate users of Danger needing to use this.
Class Method Summary collapse
-
.instance_name ⇒ String
The instance name used in the Dangerfile.
Instance Method Summary collapse
-
#initialize(dangerfile) ⇒ DangerfileMessagingPlugin
constructor
A new instance of DangerfileMessagingPlugin.
Methods inherited from Plugin
all_plugins, clear_external_plugins, inherited, #method_missing
Constructor Details
#initialize(dangerfile) ⇒ DangerfileMessagingPlugin
Returns a new instance of DangerfileMessagingPlugin.
74 75 76 77 78 79 80 81 |
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 74 def initialize(dangerfile) super(dangerfile) @warnings = [] @errors = [] @messages = [] @markdowns = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Danger::Plugin
Class Method Details
.instance_name ⇒ String
The instance name used in the Dangerfile
86 87 88 |
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 86 def self.instance_name "messaging" end |
Instance Method Details
#fail(*failures, **options) ⇒ void Also known as: failure
This method returns an undefined value.
Declares a CI blocking error
194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 194 def fail(*failures, **) sticky = .fetch(:sticky, false) file = .fetch(:file, nil) line = .fetch(:line, nil) failures.flatten.each do |failure| next if should_ignore_violation(failure) @errors << Violation.new(failure, sticky, file, line, type: :error) if failure end end |
#markdown(*markdowns, **options) ⇒ void
This method returns an undefined value.
Print markdown to below the table
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 108 def markdown(*markdowns, **) file = .fetch(:file, nil) line = .fetch(:line, nil) start_line = .fetch(:start_line, nil) side = .fetch(:side, nil) start_side = .fetch(:start_side, nil) markdowns.flatten.each do |markdown| @markdowns << Markdown.new( markdown, file, line, start_line: start_line, side: side, start_side: start_side ) end end |
#message(*messages, **options) ⇒ void
This method returns an undefined value.
Print out a generate message on the PR
142 143 144 145 146 147 148 149 150 |
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 142 def (*, **) sticky = .fetch(:sticky, false) file = .fetch(:file, nil) line = .fetch(:line, nil) .flatten.each do || @messages << Violation.new(, sticky, file, line, type: :message) if end end |
#status_report ⇒ Hash
A list of all messages passed to Danger, including the markdowns.
214 215 216 217 218 219 220 221 |
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 214 def status_report { errors: @errors.map(&:message).clone.freeze, warnings: @warnings.map(&:message).clone.freeze, messages: @messages.map(&:message).clone.freeze, markdowns: @markdowns.clone.freeze } end |
#violation_report ⇒ Hash
A list of all violations passed to Danger, we don’t anticipate users of Danger needing to use this.
229 230 231 232 233 234 235 |
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 229 def violation_report { errors: @errors.clone.freeze, warnings: @warnings.clone.freeze, messages: @messages.clone.freeze } end |
#warn(*warnings, **options) ⇒ void
This method returns an undefined value.
Specifies a problem, but not critical
167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 167 def warn(*warnings, **) sticky = .fetch(:sticky, false) file = .fetch(:file, nil) line = .fetch(:line, nil) warnings.flatten.each do |warning| next if should_ignore_violation(warning) @warnings << Violation.new(warning, sticky, file, line, type: :warning) if warning end end |