Class: Danger::Executor

Inherits:
Object
  • Object
show all
Defined in:
lib/danger/danger_core/executor.rb

Instance Method Summary collapse

Instance Method Details

#post_results(dm, danger_id) ⇒ Object



56
57
58
59
60
61
62
# File 'lib/danger/danger_core/executor.rb', line 56

def post_results(dm, danger_id)
  gh = dm.env.request_source
  violations = dm.violation_report
  status = dm.status_report

  gh.update_pull_request!(warnings: violations[:warnings], errors: violations[:errors], messages: violations[:messages], markdowns: status[:markdowns], danger_id: danger_id)
end

#run(env: nil, dm: nil, cork: nil, base: nil, head: nil, dangerfile_path: nil, danger_id: nil) ⇒ Object



3
4
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/danger/danger_core/executor.rb', line 3

def run(env: nil,
        dm: nil,
        cork: nil,
        base: nil,
        head: nil,
        dangerfile_path: nil,
        danger_id: nil)

  cork ||= Cork::Board.new(silent: false,
                          verbose: false)

  # Could we find a CI source at all?
  unless EnvironmentManager.local_ci_source(ENV)
    abort("Could not find the type of CI for Danger to run on.".red) unless ci_klass
  end

  # Could we determine that the CI source is inside a PR?
  unless EnvironmentManager.pr?(ENV)
    cork.puts "Not a Pull Request - skipping `danger` run".yellow
    return
  end

  # OK, then we can have some
  env ||= EnvironmentManager.new(ENV)
  dm ||= Dangerfile.new(env, cork)

  dm.init_plugins

  dm.env.fill_environment_vars

  begin
    dm.env.ensure_danger_branches_are_setup

    # Offer the chance for a user to specify a branch through the command line
    ci_base = base || EnvironmentManager.danger_base_branch
    ci_head = head || EnvironmentManager.danger_head_branch
    dm.env.scm.diff_for_folder(".", from: ci_base, to: ci_head)

    dm.parse(Pathname.new(dangerfile_path))

    if dm.env.request_source.organisation && !dm.env.request_source.danger_repo? && (danger_repo = dm.env.request_source.fetch_danger_repo)
      url = dm.env.request_source.file_url(repository: danger_repo.name, path: "Dangerfile")
      path = dm.plugin.download(url)
      dm.parse(Pathname.new(path))
    end

    post_results(dm, danger_id)
    dm.print_results
  ensure
    dm.env.clean_up
  end
end