Class: Danger::EnvironmentManager

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env, ui = nil, danger_id = "danger") ⇒ EnvironmentManager

Returns a new instance of EnvironmentManager.



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/danger/danger_core/environment_manager.rb', line 28

def initialize(env, ui = nil, danger_id = "danger")
  ci_klass = self.class.local_ci_source(env)
  self.ci_source = ci_klass.new(env)
  self.ui = ui || Cork::Board.new(silent: false, verbose: false)
  self.danger_id = danger_id

  RequestSources::RequestSource.available_request_sources.each do |klass|
    next unless self.ci_source.supports?(klass)

    request_source = klass.new(self.ci_source, env)
    next unless request_source.validates_as_ci?
    next unless request_source.validates_as_api_source?
    self.request_source = request_source
  end

  raise_error_for_no_request_source(env, self.ui) unless self.request_source
  self.scm = self.request_source.scm
end

Instance Attribute Details

#ci_sourceObject

Returns the value of attribute ci_source.



6
7
8
# File 'lib/danger/danger_core/environment_manager.rb', line 6

def ci_source
  @ci_source
end

#danger_idObject

Returns the value of attribute danger_id.



6
7
8
# File 'lib/danger/danger_core/environment_manager.rb', line 6

def danger_id
  @danger_id
end

#request_sourceObject

Returns the value of attribute request_source.



6
7
8
# File 'lib/danger/danger_core/environment_manager.rb', line 6

def request_source
  @request_source
end

#scmObject

Returns the value of attribute scm.



6
7
8
# File 'lib/danger/danger_core/environment_manager.rb', line 6

def scm
  @scm
end

#uiObject

Returns the value of attribute ui.



6
7
8
# File 'lib/danger/danger_core/environment_manager.rb', line 6

def ui
  @ui
end

Class Method Details

.danger_base_branchString

Returns danger’s default base branch.

Returns:

  • (String)

    danger’s default base branch



24
25
26
# File 'lib/danger/danger_core/environment_manager.rb', line 24

def self.danger_base_branch
  "danger_base".freeze
end

.danger_head_branchString

Returns danger’s default head branch.

Returns:

  • (String)

    danger’s default head branch



19
20
21
# File 'lib/danger/danger_core/environment_manager.rb', line 19

def self.danger_head_branch
  "danger_head".freeze
end

.local_ci_source(env) ⇒ Object

Finds a Danger::CI class based on the ENV



9
10
11
# File 'lib/danger/danger_core/environment_manager.rb', line 9

def self.local_ci_source(env)
  CI.available_ci_sources.find { |ci| ci.validates_as_ci? env }
end

.pr?(env) ⇒ Boolean

Uses the current Danger::CI subclass, and sees if it is a PR

Returns:

  • (Boolean)


14
15
16
# File 'lib/danger/danger_core/environment_manager.rb', line 14

def self.pr?(env)
  local_ci_source(env).validates_as_pr?(env)
end

Instance Method Details

#clean_upObject



61
62
63
64
65
# File 'lib/danger/danger_core/environment_manager.rb', line 61

def clean_up
  [EnvironmentManager.danger_base_branch, EnvironmentManager.danger_head_branch].each do |branch|
    scm.exec("branch -D #{branch}") unless scm.exec("rev-parse --quiet --verify #{branch}").empty?
  end
end

#ensure_danger_branches_are_setupObject



55
56
57
58
59
# File 'lib/danger/danger_core/environment_manager.rb', line 55

def ensure_danger_branches_are_setup
  clean_up

  self.request_source.setup_danger_branches
end

#fill_environment_varsObject



51
52
53
# File 'lib/danger/danger_core/environment_manager.rb', line 51

def fill_environment_vars
  request_source.fetch_details
end

#meta_info_for_baseObject



71
72
73
# File 'lib/danger/danger_core/environment_manager.rb', line 71

def meta_info_for_base
  scm.exec("--no-pager log #{EnvironmentManager.danger_base_branch} -n1")
end

#meta_info_for_headObject



67
68
69
# File 'lib/danger/danger_core/environment_manager.rb', line 67

def meta_info_for_head
  scm.exec("--no-pager log #{EnvironmentManager.danger_head_branch} -n1")
end

#pr?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/danger/danger_core/environment_manager.rb', line 47

def pr?
  self.ci_source != nil
end

#raise_error_for_no_request_source(env, ui) ⇒ Object



75
76
77
78
79
80
81
82
# File 'lib/danger/danger_core/environment_manager.rb', line 75

def raise_error_for_no_request_source(env, ui)
  title, subtitle = extract_title_and_subtitle_from_source(ci_source.repo_url)
  subtitle += travis_note if env["TRAVIS_SECURE_ENV_VARS"] == "true"

  ui_display_no_request_source_error_message(ui, env, title, subtitle)

  exit(1)
end