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.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/danger/danger_core/environment_manager.rb', line 32

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.



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

def ci_source
  @ci_source
end

#danger_idObject

Returns the value of attribute danger_id.



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

def danger_id
  @danger_id
end

#request_sourceObject

Returns the value of attribute request_source.



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

def request_source
  @request_source
end

#scmObject

Returns the value of attribute scm.



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

def scm
  @scm
end

#uiObject

Returns the value of attribute ui.



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

def ui
  @ui
end

Class Method Details

.danger_base_branchString

Returns danger’s default base branch.

Returns:

  • (String)

    danger’s default base branch



28
29
30
# File 'lib/danger/danger_core/environment_manager.rb', line 28

def self.danger_base_branch
  "danger_base"
end

.danger_head_branchString

Returns danger’s default head branch.

Returns:

  • (String)

    danger’s default head branch



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

def self.danger_head_branch
  "danger_head"
end

.local_ci_source(env) ⇒ Object

Finds a Danger::CI class based on the ENV



11
12
13
14
15
# File 'lib/danger/danger_core/environment_manager.rb', line 11

def self.local_ci_source(env)
  return Danger::LocalOnlyGitRepo if LocalOnlyGitRepo.validates_as_ci? 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)


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

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

Instance Method Details

#clean_upObject



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

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



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

def ensure_danger_branches_are_setup
  clean_up

  self.request_source.setup_danger_branches
end

#fill_environment_varsObject



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

def fill_environment_vars
  request_source.fetch_details
end

#meta_info_for_baseObject



76
77
78
# File 'lib/danger/danger_core/environment_manager.rb', line 76

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

#meta_info_for_headObject



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

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

#pr?Boolean

Returns:

  • (Boolean)


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

def pr?
  self.ci_source != nil
end

#raise_error_for_no_request_source(env, ui) ⇒ Object



80
81
82
83
84
85
86
87
# File 'lib/danger/danger_core/environment_manager.rb', line 80

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