class Danger::DangerfileMessagingPlugin

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

@example Multiple passed arguments

message 'Hello', 'World', file: "Dangerfile", line: 1
warn ['This', 'is', 'warning'], file: "Dangerfile", line: 1
failure 'Ooops', 'bad bad error', sticky: false
markdown '# And', '# Even', '# Markdown', file: "Dangerfile", line: 1

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.

@example Failing a build

failure "This build didn't pass tests"
failure "Ooops!", "Something bad happened"
failure ["This is example", "with array"]

@example Failing a build, and note that on subsequent runs

failure("This build didn't pass tests", sticky: true)

@example Passing a warning

warn "This build didn't pass linting"
warn "Hm...", "This is not really good"
warn ["Multiple warnings", "via array"]

@example Displaying a markdown table

message = "### Proselint found issues\n\n"
message << "Line | Message | Severity |\n"
message << "| --- | ----- | ----- |\n"
message << "20 | No documentation | Error \n"
markdown message

markdown "### First issue", "### Second issue"
markdown ["### First issue", "### Second issue"]

@example Adding an inline warning to a file

warn("You shouldn't use puts in your Dangerfile", file: "Dangerfile", line: 10)

@see danger/danger @tags core, messaging