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) ⇒ EnvironmentManager

Returns a new instance of EnvironmentManager.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/danger/danger_core/environment_manager.rb', line 18

def initialize(env)
  ci_klass = self.class.local_ci_source(env)
  self.ci_source = ci_klass.new(env)

  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?
    self.request_source = request_source
  end

  raise "Could not find a Request Source for #{ci_klass}".red 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

#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

Class Method Details

.danger_base_branchObject



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

def self.danger_base_branch
  "danger_base"
end

.danger_head_branchObject



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

def self.danger_head_branch
  "danger_head"
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



48
49
50
51
52
# File 'lib/danger/danger_core/environment_manager.rb', line 48

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



42
43
44
45
46
# File 'lib/danger/danger_core/environment_manager.rb', line 42

def ensure_danger_branches_are_setup
  clean_up

  self.request_source.setup_danger_branches
end

#fill_environment_varsObject



38
39
40
# File 'lib/danger/danger_core/environment_manager.rb', line 38

def fill_environment_vars
  request_source.fetch_details
end

#meta_info_for_baseObject



54
55
56
# File 'lib/danger/danger_core/environment_manager.rb', line 54

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

#meta_info_for_headObject



58
59
60
# File 'lib/danger/danger_core/environment_manager.rb', line 58

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

#pr?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/danger/danger_core/environment_manager.rb', line 34

def pr?
  self.ci_source != nil
end