Class: Build::ProvisionTask

Inherits:
Task
  • Object
show all
Defined in:
lib/build/provision_node.rb

Overview

Represents a task that builds the dependencies of a provision and applies the provision itself.

Instance Attribute Summary collapse

Attributes inherited from Task

#group

Instance Method Summary collapse

Methods inherited from Task

#name, #node_string, #task_class

Constructor Details

#initialize(*arguments, **options) ⇒ ProvisionTask

Initialize the provision task.



76
77
78
79
80
81
82
83
84
85
# File 'lib/build/provision_node.rb', line 76

def initialize(*arguments, **options)
	super
	
	@dependencies = []
	
	@environments = []
	@public_environments = []
	
	@build_task = nil
end

Instance Attribute Details

#build_taskObject (readonly)

Returns the value of attribute build_task.



90
91
92
# File 'lib/build/provision_node.rb', line 90

def build_task
  @build_task
end

#environmentsObject (readonly)

Returns the value of attribute environments.



87
88
89
# File 'lib/build/provision_node.rb', line 87

def environments
  @environments
end

#public_environmentsObject (readonly)

Returns the value of attribute public_environments.



88
89
90
# File 'lib/build/provision_node.rb', line 88

def public_environments
  @public_environments
end

Instance Method Details

#local_environmentObject



111
112
113
# File 'lib/build/provision_node.rb', line 111

def local_environment
	Build::Environment.combine(@node.environment, *@environments)&.evaluate(name: @node.name).freeze
end

#output_environmentObject



116
117
118
119
120
# File 'lib/build/provision_node.rb', line 116

def output_environment
	if @build_task
		@build_task.output_environment.dup(parent: nil)
	end
end

#output_environmentsObject



123
124
125
126
127
128
129
130
131
# File 'lib/build/provision_node.rb', line 123

def output_environments
	environments = @public_environments.dup
	
	if environment = self.output_environment
		environments << environment
	end
	
	return environments
end

#provisionObject



93
94
95
# File 'lib/build/provision_node.rb', line 93

def provision
	@node.provision
end

#updateObject

Build all dependencies and then apply the provision.



98
99
100
101
102
103
104
105
106
107
108
# File 'lib/build/provision_node.rb', line 98

def update
	provision.each_dependency do |dependency|
		@dependencies << invoke(@node.dependency_node_for(dependency))
	end
	
	if wait_for_children?
		update_environments!
	else
		fail!(DependenciesFailed)
	end
end