build 2.8.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/build/controller.rb +45 -15
- data/lib/build/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +1 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b92547e352a87437f672b77a83666f9295deebb585c8949969e377dc2325cbb5
|
|
4
|
+
data.tar.gz: 364a58f6aa86c31a039b7cd5b39e6706128ad46bd84912df2d48098833c260bc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1c3583294056a16e3042a3d6ece645f326669bb5c13c0fad8507b5198d6a29e20fe82f266f8aba55787964ae1730d2e7ca021e0f9eba4d6c19666bb6594631f7
|
|
7
|
+
data.tar.gz: 91637b6d29d74cff4246741955d8a8b2a082510fd1a0b48ebc8228f60c48987f5a44e06718a452db3dbd4b9cadebbb04e7b0e2e628caadbbd97ee79f32a2d86d
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/lib/build/controller.rb
CHANGED
|
@@ -20,15 +20,43 @@ require "console"
|
|
|
20
20
|
module Build
|
|
21
21
|
# Represents the top-level build controller that manages the walker and process group.
|
|
22
22
|
class Controller
|
|
23
|
+
# A builder class for constructing the controller.
|
|
24
|
+
class Builder
|
|
25
|
+
# Initialize the builder with an empty list of nodes.
|
|
26
|
+
def initialize
|
|
27
|
+
@nodes = []
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @attribute [Array(Graph::Node)] The list of nodes to build.
|
|
31
|
+
attr :nodes
|
|
32
|
+
|
|
33
|
+
# Add a build environment to the controller.
|
|
34
|
+
def add_chain(chain, arguments = [], environment)
|
|
35
|
+
@nodes << ChainNode.new(chain, arguments, environment)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Create a new controller using a builder.
|
|
40
|
+
def self.build(**options)
|
|
41
|
+
builder = Builder.new
|
|
42
|
+
|
|
43
|
+
yield builder
|
|
44
|
+
|
|
45
|
+
new(builder.nodes, **options)
|
|
46
|
+
end
|
|
47
|
+
|
|
23
48
|
# Initialize the controller, yielding self to allow adding chain nodes.
|
|
24
49
|
# @parameter limit [Integer | Nil] Maximum number of concurrent processes.
|
|
25
|
-
def initialize(limit: nil)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
50
|
+
def initialize(nodes = [], limit: nil)
|
|
51
|
+
if block_given?
|
|
52
|
+
warn "Passing a block to Build::Controller.new is deprecated, use Build::Controller.build instead."
|
|
53
|
+
|
|
54
|
+
builder = Builder.new
|
|
55
|
+
yield builder
|
|
56
|
+
@nodes = builder.nodes.freeze
|
|
57
|
+
else
|
|
58
|
+
@nodes = nodes.freeze
|
|
59
|
+
end
|
|
32
60
|
|
|
33
61
|
@group = Process::Group.new(limit: limit)
|
|
34
62
|
|
|
@@ -41,6 +69,15 @@ module Build
|
|
|
41
69
|
attr :nodes
|
|
42
70
|
attr :walker
|
|
43
71
|
|
|
72
|
+
# Visit a task, executing its update method within the context of the task's visit method.
|
|
73
|
+
#
|
|
74
|
+
# @parameter task [Build::Task] The task to visit.
|
|
75
|
+
def visit(task)
|
|
76
|
+
task.visit do
|
|
77
|
+
task.update
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
44
81
|
# Execute a single step of the build graph for the given node.
|
|
45
82
|
# @parameter walker [Build::Graph::Walker] The graph walker.
|
|
46
83
|
# @parameter node [Build::Graph::Node] The node to process.
|
|
@@ -49,9 +86,7 @@ module Build
|
|
|
49
86
|
task_class = node.task_class(parent_task) || Task
|
|
50
87
|
task = task_class.new(walker, node, @group)
|
|
51
88
|
|
|
52
|
-
|
|
53
|
-
task.update
|
|
54
|
-
end
|
|
89
|
+
self.visit(task)
|
|
55
90
|
end
|
|
56
91
|
|
|
57
92
|
# @returns [Boolean] Whether the build has failed.
|
|
@@ -59,11 +94,6 @@ module Build
|
|
|
59
94
|
@walker.failed?
|
|
60
95
|
end
|
|
61
96
|
|
|
62
|
-
# Add a build environment to the controller.
|
|
63
|
-
def add_chain(chain, arguments = [], environment)
|
|
64
|
-
@nodes << ChainNode.new(chain, arguments, environment)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
97
|
# Execute all top-level nodes, waiting for each to complete.
|
|
68
98
|
def update
|
|
69
99
|
@nodes.each do |node|
|
data/lib/build/version.rb
CHANGED
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
metadata.gz.sig
CHANGED
|
Binary file
|