class Pantograph::Actions::DangerAction

Public Class Methods

authors() click to toggle source
# File pantograph/lib/pantograph/actions/danger.rb, line 147
def self.authors
  ['KrauseFx', 'johnknapprs']
end
available_options() click to toggle source
# File pantograph/lib/pantograph/actions/danger.rb, line 40
def self.available_options
  [
    PantographCore::ConfigItem.new(
      key: :use_bundle_exec,
      env_name: 'DANGER_USE_BUNDLE_EXEC',
      description: 'Use bundle exec when there is a Gemfile presented',
      is_string: false,
      default_value: true
    ),
    PantographCore::ConfigItem.new(
      key: :verbose,
      env_name: 'DANGER_VERBOSE',
      description: 'Show more debugging information',
      is_string: false,
      default_value: false
    ),
    PantographCore::ConfigItem.new(
      key: :danger_id,
      env_name: 'DANGER_ID',
      description: 'The identifier of this Danger instance',
      type: String,
      optional: true
    ),
    PantographCore::ConfigItem.new(
      key: :dangerfile,
      env_name: 'DANGER_DANGERFILE',
      description: 'The location of your Dangerfile',
      type: String,
      optional: false,
      default_value: 'Dangerfile'
    ),
    PantographCore::ConfigItem.new(
      key: :github_api_token,
      env_name: 'DANGER_GITHUB_API_TOKEN',
      description: 'GitHub API token for danger',
      sensitive: true,
      type: String,
      optional: true
    ),
    PantographCore::ConfigItem.new(
      key: :fail_on_errors,
      env_name: 'DANGER_FAIL_ON_ERRORS',
      description: 'Should always fail the build process, defaults to false',
      is_string: false,
      optional: true,
      default_value: false
    ),
    PantographCore::ConfigItem.new(
      key: :new_comment,
      env_name: 'DANGER_NEW_COMMENT',
      description: 'Makes Danger post a new comment instead of editing its previous one',
      is_string: false,
      optional: true,
      default_value: false
    ),
    PantographCore::ConfigItem.new(
      key: :remove_previous_comments,
      env_name: 'DANGER_REMOVE_PREVIOUS_COMMENT',
      description: 'Makes Danger remove all previous comment and create a new one in the end of the list',
      is_string: false,
      optional: true,
      default_value: false
    ),
    PantographCore::ConfigItem.new(
      key: :base,
      env_name: 'DANGER_BASE',
      description: 'A branch/tag/commit to use as the base of the diff. [master|dev|stable]',
      type: String,
      optional: true
    ),
    PantographCore::ConfigItem.new(
      key: :head,
      env_name: 'DANGER_HEAD',
      description: 'A branch/tag/commit to use as the head. [master|dev|stable]',
      type: String,
      optional: true
    ),
    PantographCore::ConfigItem.new(
      key: :pr,
      env_name: 'DANGER_PR',
      description: 'Run danger on a specific pull request. e.g. \"https://github.com/danger/danger/pull/518\"',
      type: String,
      optional: true
    )
  ]
end
category() click to toggle source
# File pantograph/lib/pantograph/actions/danger.rb, line 143
def self.category
  :source_control
end
description() click to toggle source
# File pantograph/lib/pantograph/actions/danger.rb, line 29
def self.description
  'Runs `danger` for the project'
end
details() click to toggle source
# File pantograph/lib/pantograph/actions/danger.rb, line 33
def self.details
  [
    'Stop Saying your Forgot in Source Control',
    'More information: [https://github.com/danger/danger](https://github.com/danger/danger).'
  ].join("\n")
end
example_code() click to toggle source
# File pantograph/lib/pantograph/actions/danger.rb, line 131
def self.example_code
  [
    'danger',
    'danger(
      danger_id: "unit-tests",
      dangerfile: "tests/MyOtherDangerFile",
      github_api_token: ENV["GITHUB_API_TOKEN"],
      verbose: true
    )'
  ]
end
is_supported?(platform) click to toggle source
# File pantograph/lib/pantograph/actions/danger.rb, line 127
def self.is_supported?(platform)
  true
end
run(params) click to toggle source
# File pantograph/lib/pantograph/actions/danger.rb, line 4
def self.run(params)
  ENV['DANGER_GITHUB_API_TOKEN'] = params[:github_api_token] if params[:github_api_token]

  danger_cmd = []

  if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
    danger_cmd << 'bundle exec'
  end

  danger_cmd << 'danger'
  danger_cmd << "--dangerfile=#{params[:dangerfile]}"
  danger_cmd << "--new-comment"                     if params[:new_comment]
  danger_cmd << "--remove-previous-comments"        if params[:remove_previous_comments]
  danger_cmd << "--base=#{params[:base]}"           if params[:base]
  danger_cmd << "--head=#{params[:head]}"           if params[:head]
  danger_cmd << "pr #{params[:pr]}"                 if params[:pr]
  danger_cmd << "--danger_id=#{params[:danger_id]}" if params[:danger_id]
  danger_cmd << '--verbose'                         if params[:verbose]

  danger_cmd << "--fail-on-errors=#{params[:fail_on_errors]}"
  danger_cmd = danger_cmd.join(' ')

  Actions.sh(danger_cmd)
end