build 2.5.1 → 2.6.1
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/build_node.rb +13 -18
- data/lib/build/chain_node.rb +3 -3
- data/lib/build/dependency_node.rb +30 -66
- data/lib/build/provision_node.rb +146 -0
- data/lib/build/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +62 -54
- metadata.gz.sig +0 -0
- data/.gitignore +0 -23
- data/.rspec +0 -4
- data/.travis.yml +0 -12
- data/Gemfile +0 -4
- data/Gemfile.local +0 -24
- data/README.md +0 -57
- data/Rakefile +0 -10
- data/build.gemspec +0 -32
- data/spec/build/controller_spec.rb +0 -129
- data/spec/build/name_spec.rb +0 -52
- data/spec/build/rule_spec.rb +0 -53
- data/spec/build/rulebook_spec.rb +0 -52
- data/spec/build/target.rb +0 -20
- data/spec/spec_helper.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d19cc4bbe6685576a37aaa0abc93c2f264660d0ae4265c8c9eb8cc7eea9a462
|
4
|
+
data.tar.gz: c40c1bd3188a406d6c5f836ed02181f7fa4ccb8ea6b4b42367df01586d097e8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 466d9379b0c9c35ac3e2ea9494ea1b870ceec42d74494572e79aa6938e02a28da7185bac37165e8ee62b70d59640c928adb25276b52554b5b0a4fcf2dd952dcf
|
7
|
+
data.tar.gz: 6fe800fc5113bbf0831b04a853a3e9fc2340884662feac512f86b92e6595467d4df8049c5852dcef6644b8b45f22b2b9d8a9fb438ae7bc7ef2351f2c12d2f443
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data/lib/build/build_node.rb
CHANGED
@@ -25,30 +25,27 @@ require 'console/event/spawn'
|
|
25
25
|
|
26
26
|
module Build
|
27
27
|
class BuildNode < Graph::Node
|
28
|
-
def initialize(environment,
|
28
|
+
def initialize(environment, provision, arguments)
|
29
29
|
@environment = environment
|
30
|
-
@
|
31
|
-
@provisions = provisions
|
30
|
+
@provision = provision
|
32
31
|
@arguments = arguments
|
33
32
|
|
34
33
|
super(Files::List::NONE, :inherit)
|
35
34
|
end
|
36
35
|
|
37
36
|
attr :environment
|
38
|
-
attr :
|
39
|
-
attr :provisions
|
37
|
+
attr :provision
|
40
38
|
attr :arguments
|
41
39
|
|
42
40
|
def == other
|
43
41
|
super and
|
44
42
|
@environment == other.environment and
|
45
|
-
@
|
46
|
-
@provisions == other.provisions and
|
43
|
+
@provision == other.provision and
|
47
44
|
@arguments == other.arguments
|
48
45
|
end
|
49
46
|
|
50
47
|
def hash
|
51
|
-
super ^ @environment.hash ^ @
|
48
|
+
super ^ @environment.hash ^ @provision.hash ^ @arguments.hash
|
52
49
|
end
|
53
50
|
|
54
51
|
def task_class(parent_task)
|
@@ -56,19 +53,17 @@ module Build
|
|
56
53
|
end
|
57
54
|
|
58
55
|
def initial_environment
|
59
|
-
Build::Environment.new(@environment
|
56
|
+
Build::Environment.new(@environment)
|
60
57
|
end
|
61
58
|
|
62
59
|
def name
|
63
|
-
@
|
60
|
+
@environment.name
|
64
61
|
end
|
65
62
|
|
66
63
|
def apply!(task)
|
67
64
|
output_environment = self.initial_environment
|
68
65
|
|
69
|
-
|
70
|
-
output_environment.construct!(task, *@arguments, &provision.value)
|
71
|
-
end
|
66
|
+
output_environment.construct!(task, *@arguments, &@provision.value)
|
72
67
|
|
73
68
|
task.output_environment = output_environment
|
74
69
|
end
|
@@ -104,10 +99,10 @@ module Build
|
|
104
99
|
@node.dirty?
|
105
100
|
end
|
106
101
|
|
107
|
-
def spawn(*arguments)
|
102
|
+
def spawn(*arguments, **options)
|
108
103
|
if wet?
|
109
|
-
@logger&.info(self) {Console::Event::Spawn.for(*arguments)}
|
110
|
-
status = @group.spawn(*arguments)
|
104
|
+
@logger&.info(self) {Console::Event::Spawn.for(*arguments, **options)}
|
105
|
+
status = @group.spawn(*arguments, **options)
|
111
106
|
|
112
107
|
if status != 0
|
113
108
|
raise CommandFailure.new(self, arguments, status)
|
@@ -119,8 +114,8 @@ module Build
|
|
119
114
|
@shell_environment ||= environment.flatten.export
|
120
115
|
end
|
121
116
|
|
122
|
-
def run!(*arguments)
|
123
|
-
self.spawn(shell_environment, *arguments)
|
117
|
+
def run!(*arguments, **options)
|
118
|
+
self.spawn(shell_environment, *arguments, **options)
|
124
119
|
end
|
125
120
|
|
126
121
|
def touch(path)
|
data/lib/build/chain_node.rb
CHANGED
@@ -66,9 +66,9 @@ module Build
|
|
66
66
|
def apply!(task)
|
67
67
|
# Go through all the dependencies in order and apply them to the build graph:
|
68
68
|
@chain.dependencies.each do |dependency|
|
69
|
-
|
70
|
-
|
71
|
-
|
69
|
+
task.invoke(
|
70
|
+
DependencyNode.new(@chain, dependency, @environment, @arguments)
|
71
|
+
)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
require 'build/graph'
|
22
22
|
|
23
|
-
require_relative '
|
23
|
+
require_relative 'provision_node'
|
24
24
|
|
25
25
|
module Build
|
26
26
|
class DependencyNode < Graph::Node
|
@@ -48,7 +48,7 @@ module Build
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def hash
|
51
|
-
super ^ @chain.hash ^ @environment.hash ^ @arguments.hash
|
51
|
+
super ^ @chain.hash ^ @dependency.hash ^ @environment.hash ^ @arguments.hash
|
52
52
|
end
|
53
53
|
|
54
54
|
def task_class(parent_task)
|
@@ -63,26 +63,18 @@ module Build
|
|
63
63
|
@chain.resolved[@dependency]
|
64
64
|
end
|
65
65
|
|
66
|
-
def alias?
|
67
|
-
@dependency.alias?
|
68
|
-
end
|
69
|
-
|
70
66
|
def public?
|
71
67
|
@dependency.public?
|
72
68
|
end
|
73
69
|
|
74
|
-
|
75
|
-
|
76
|
-
# Go through all the dependencies in order and apply them to the build graph:
|
77
|
-
@chain.dependencies.each do |dependency|
|
78
|
-
node = DependencyNode.new(@chain, dependency, @environment, @arguments)
|
79
|
-
|
80
|
-
task.invoke(node)
|
81
|
-
end
|
70
|
+
def provision_node_for(provision)
|
71
|
+
ProvisionNode.new(@chain, provision, @environment, @arguments)
|
82
72
|
end
|
83
|
-
|
84
|
-
|
85
|
-
|
73
|
+
end
|
74
|
+
|
75
|
+
module ProvisionsFailed
|
76
|
+
def self.to_s
|
77
|
+
"Failed to build all provisions!"
|
86
78
|
end
|
87
79
|
end
|
88
80
|
|
@@ -90,15 +82,18 @@ module Build
|
|
90
82
|
def initialize(*arguments, **options)
|
91
83
|
super
|
92
84
|
|
85
|
+
@provisions = []
|
86
|
+
|
87
|
+
@environments = nil
|
93
88
|
@environment = nil
|
94
|
-
@tasks = []
|
95
89
|
end
|
96
90
|
|
97
|
-
attr :group
|
98
|
-
attr :logger
|
99
|
-
|
100
91
|
attr :environment
|
101
92
|
|
93
|
+
def dependency
|
94
|
+
@node.dependency
|
95
|
+
end
|
96
|
+
|
102
97
|
def update
|
103
98
|
logger.debug(self) do |buffer|
|
104
99
|
buffer.puts "building #{@node} which #{@node.dependency}"
|
@@ -109,55 +104,24 @@ module Build
|
|
109
104
|
|
110
105
|
# Lookup what things this dependency provides:
|
111
106
|
@node.provisions.each do |provision|
|
112
|
-
|
113
|
-
@
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
def update_outputs
|
119
|
-
dependency = @node.dependency
|
120
|
-
environments = [@node.environment]
|
121
|
-
|
122
|
-
public_environments = []
|
123
|
-
public_alias = @node.alias?
|
124
|
-
|
125
|
-
@tasks.each do |task|
|
126
|
-
if environment = task.environment
|
127
|
-
environments << environment
|
128
|
-
|
129
|
-
if public_alias || task.node.public?
|
130
|
-
public_environments << environment
|
131
|
-
# else
|
132
|
-
# logger.debug("Skipping #{nested_dependency} in public environment.")
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
unless public_alias
|
138
|
-
logger.debug(self) {"Building: #{dependency} <- #{@tasks.join}"}
|
139
|
-
|
140
|
-
# environments.each do |environment|
|
141
|
-
# logger.debug {"Using #{environment}"}
|
142
|
-
# end
|
143
|
-
|
144
|
-
local_environment = Build::Environment.combine(*environments)&.evaluate || Build::Environment.new
|
145
|
-
|
146
|
-
# logger.debug("Local Environment: #{local_environment}")
|
147
|
-
|
148
|
-
build_task = invoke(
|
149
|
-
BuildNode.new(local_environment, dependency, @node.provisions, @node.arguments)
|
107
|
+
@provisions << invoke(
|
108
|
+
@node.provision_node_for(provision)
|
150
109
|
)
|
151
|
-
|
152
|
-
if wait_for_children?
|
153
|
-
output_environment = build_task.output_environment
|
154
|
-
public_environments << output_environment.dup(parent: nil, name: dependency.name)
|
155
|
-
end
|
156
110
|
end
|
157
111
|
|
158
|
-
|
112
|
+
if wait_for_children?
|
113
|
+
update_environments!
|
114
|
+
else
|
115
|
+
fail!(ProvisionsFailed)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
private
|
120
|
+
|
121
|
+
def update_environments!
|
122
|
+
@environments = @provisions.flat_map(&:output_environments)
|
159
123
|
|
160
|
-
|
124
|
+
@environment = Build::Environment.combine(*@environments)
|
161
125
|
end
|
162
126
|
end
|
163
127
|
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
# Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
11
|
+
# all copies or substantial portions of the Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
# THE SOFTWARE.
|
20
|
+
|
21
|
+
require 'build/graph'
|
22
|
+
|
23
|
+
require_relative 'build_node'
|
24
|
+
|
25
|
+
module Build
|
26
|
+
class ProvisionNode < Graph::Node
|
27
|
+
def initialize(chain, provision, environment, arguments)
|
28
|
+
@chain = chain
|
29
|
+
@provision = provision
|
30
|
+
@environment = environment
|
31
|
+
@arguments = arguments
|
32
|
+
|
33
|
+
# Wait here, for all dependent targets, to be done:
|
34
|
+
super(Files::List::NONE, :inherit)
|
35
|
+
end
|
36
|
+
|
37
|
+
attr :chain
|
38
|
+
attr :provision
|
39
|
+
attr :environment
|
40
|
+
attr :arguments
|
41
|
+
|
42
|
+
def == other
|
43
|
+
super and
|
44
|
+
@chain == other.chain and
|
45
|
+
@provision == other.provision and
|
46
|
+
@environment == other.environment and
|
47
|
+
@arguments == other.arguments
|
48
|
+
end
|
49
|
+
|
50
|
+
def hash
|
51
|
+
super ^ @chain.hash ^ @provision.hash ^ @environment.hash ^ @arguments.hash
|
52
|
+
end
|
53
|
+
|
54
|
+
def task_class(parent_task)
|
55
|
+
ProvisionTask
|
56
|
+
end
|
57
|
+
|
58
|
+
def name
|
59
|
+
@provision.name
|
60
|
+
end
|
61
|
+
|
62
|
+
def dependency_node_for(dependency)
|
63
|
+
DependencyNode.new(@chain, dependency, @environment, @arguments)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
module DependenciesFailed
|
68
|
+
def self.to_s
|
69
|
+
"Failed to build all dependencies!"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class ProvisionTask < Task
|
74
|
+
def initialize(*arguments, **options)
|
75
|
+
super
|
76
|
+
|
77
|
+
@dependencies = []
|
78
|
+
|
79
|
+
@environments = []
|
80
|
+
@public_environments = []
|
81
|
+
|
82
|
+
@build_task = nil
|
83
|
+
end
|
84
|
+
|
85
|
+
attr :environments
|
86
|
+
attr :public_environments
|
87
|
+
|
88
|
+
attr :build_task
|
89
|
+
|
90
|
+
def provision
|
91
|
+
@node.provision
|
92
|
+
end
|
93
|
+
|
94
|
+
def update
|
95
|
+
provision.each_dependency do |dependency|
|
96
|
+
@dependencies << invoke(@node.dependency_node_for(dependency))
|
97
|
+
end
|
98
|
+
|
99
|
+
if wait_for_children?
|
100
|
+
update_environments!
|
101
|
+
else
|
102
|
+
fail!(DependenciesFailed)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def local_environment
|
107
|
+
Build::Environment.combine(@node.environment, *@environments)&.evaluate(name: @node.name).freeze
|
108
|
+
end
|
109
|
+
|
110
|
+
def output_environment
|
111
|
+
if @build_task
|
112
|
+
@build_task.output_environment.dup(parent: nil)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def output_environments
|
117
|
+
environments = @public_environments.dup
|
118
|
+
|
119
|
+
if environment = self.output_environment
|
120
|
+
environments << environment
|
121
|
+
end
|
122
|
+
|
123
|
+
return environments
|
124
|
+
end
|
125
|
+
|
126
|
+
private
|
127
|
+
|
128
|
+
def update_environments!
|
129
|
+
@dependencies.each do |task|
|
130
|
+
if environment = task.environment
|
131
|
+
@environments << environment
|
132
|
+
|
133
|
+
if task.dependency.public? || @node.provision.alias?
|
134
|
+
@public_environments << environment
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
unless @node.provision.alias?
|
140
|
+
@build_task = invoke(
|
141
|
+
BuildNode.new(local_environment, @node.provision, @node.arguments)
|
142
|
+
)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
data/lib/build/version.rb
CHANGED
data.tar.gz.sig
ADDED
Binary file
|
metadata
CHANGED
@@ -1,57 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: build
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEhDCCAuygAwIBAgIBATANBgkqhkiG9w0BAQsFADA3MTUwMwYDVQQDDCxzYW11
|
14
|
+
ZWwud2lsbGlhbXMvREM9b3Jpb250cmFuc2Zlci9EQz1jby9EQz1uejAeFw0yMTA4
|
15
|
+
MTYwNjMzNDRaFw0yMjA4MTYwNjMzNDRaMDcxNTAzBgNVBAMMLHNhbXVlbC53aWxs
|
16
|
+
aWFtcy9EQz1vcmlvbnRyYW5zZmVyL0RDPWNvL0RDPW56MIIBojANBgkqhkiG9w0B
|
17
|
+
AQEFAAOCAY8AMIIBigKCAYEAyXLSS/cw+fXJ5e7hi+U/TeChPWeYdwJojDsFY1xr
|
18
|
+
xvtqbTTL8gbLHz5LW3QD2nfwCv3qTlw0qI3Ie7a9VMJMbSvgVEGEfQirqIgJXWMj
|
19
|
+
eNMDgKsMJtC7u/43abRKx7TCURW3iWyR19NRngsJJmaR51yGGGm2Kfsr+JtKKLtL
|
20
|
+
L188Wm3f13KAx7QJU8qyuBnj1/gWem076hzdA7xi1DbrZrch9GCRz62xymJlrJHn
|
21
|
+
9iZEZ7AxrS7vokhMlzSr/XMUihx/8aFKtk+tMLClqxZSmBWIErWdicCGTULXCBNb
|
22
|
+
E/mljo4zEVKhlTWpJklMIhr55ZRrSarKFuW7en0+tpJrfsYiAmXMJNi4XAYJH7uL
|
23
|
+
rgJuJwSaa/dMz+VmUoo7VKtSfCoOI+6v5/z0sK3oT6sG6ZwyI47DBq2XqNC6tnAj
|
24
|
+
w+XmCywiTQrFzMMAvcA7rPI4F0nU1rZId51rOvvfxaONp+wgTi4P8owZLw0/j0m4
|
25
|
+
8C20DYi6EYx4AHDXiLpElWh3AgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8E
|
26
|
+
BAMCBLAwHQYDVR0OBBYEFB6ZaeWKxQjGTI+pmz7cKRmMIywwMC4GA1UdEQQnMCWB
|
27
|
+
I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWB
|
28
|
+
I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEB
|
29
|
+
CwUAA4IBgQBVoM+pu3dpdUhZM1w051iw5GfiqclAr1Psypf16Tiod/ho//4oAu6T
|
30
|
+
9fj3DPX/acWV9P/FScvqo4Qgv6g4VWO5ZU7z2JmPoTXZtYMunRAmQPFL/gSUc6aK
|
31
|
+
vszMHIyhtyzRc6DnfW2AiVOjMBjaYv8xXZc9bduniRVPrLR4J7ozmGLh4o4uJp7w
|
32
|
+
x9KCFaR8Lvn/r0oJWJOqb/DMAYI83YeN2Dlt3jpwrsmsONrtC5S3gOUle5afSGos
|
33
|
+
bYt5ocnEpKSomR9ZtnCGljds/aeO1Xgpn2r9HHcjwnH346iNrnHmMlC7BtHUFPDg
|
34
|
+
Ts92S47PTOXzwPBDsrFiq3VLbRjHSwf8rpqybQBH9MfzxGGxTaETQYOd6b4e4Ag6
|
35
|
+
y92abGna0bmIEb4+Tx9rQ10Uijh1POzvr/VTH4bbIPy9FbKrRsIQ24qDbNJRtOpE
|
36
|
+
RAOsIl+HOBTb252nx1kIRN5hqQx272AJCbCjKx8egcUQKffFVVCI0nye09v5CK+a
|
37
|
+
HiLJ8VOFx6w=
|
38
|
+
-----END CERTIFICATE-----
|
39
|
+
date: 2022-05-23 00:00:00.000000000 Z
|
12
40
|
dependencies:
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: build-
|
42
|
+
name: build-dependency
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
16
44
|
requirements:
|
17
45
|
- - "~>"
|
18
46
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
47
|
+
version: '1.5'
|
20
48
|
type: :runtime
|
21
49
|
prerelease: false
|
22
50
|
version_requirements: !ruby/object:Gem::Requirement
|
23
51
|
requirements:
|
24
52
|
- - "~>"
|
25
53
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
54
|
+
version: '1.5'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: build-environment
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
30
58
|
requirements:
|
31
59
|
- - "~>"
|
32
60
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
61
|
+
version: '1.12'
|
34
62
|
type: :runtime
|
35
63
|
prerelease: false
|
36
64
|
version_requirements: !ruby/object:Gem::Requirement
|
37
65
|
requirements:
|
38
66
|
- - "~>"
|
39
67
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
68
|
+
version: '1.12'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: build-
|
70
|
+
name: build-graph
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
73
|
- - "~>"
|
46
74
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1
|
75
|
+
version: '2.1'
|
48
76
|
type: :runtime
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
80
|
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1
|
82
|
+
version: '2.1'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: build-makefile
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,7 +95,7 @@ dependencies:
|
|
67
95
|
- !ruby/object:Gem::Version
|
68
96
|
version: '1.0'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
98
|
+
name: console
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
101
|
- - "~>"
|
@@ -81,7 +109,7 @@ dependencies:
|
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: '1.0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
112
|
+
name: graphviz
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
@@ -95,7 +123,7 @@ dependencies:
|
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '1.0'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
126
|
+
name: bundler
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - ">="
|
@@ -109,7 +137,7 @@ dependencies:
|
|
109
137
|
- !ruby/object:Gem::Version
|
110
138
|
version: '0'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
140
|
+
name: covered
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
143
|
- - ">="
|
@@ -123,48 +151,39 @@ dependencies:
|
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: '0'
|
125
153
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
154
|
+
name: rake
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
|
-
- - "
|
157
|
+
- - ">="
|
130
158
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
159
|
+
version: '0'
|
132
160
|
type: :development
|
133
161
|
prerelease: false
|
134
162
|
version_requirements: !ruby/object:Gem::Requirement
|
135
163
|
requirements:
|
136
|
-
- - "
|
164
|
+
- - ">="
|
137
165
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
166
|
+
version: '0'
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
168
|
+
name: rspec
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
142
170
|
requirements:
|
143
|
-
- - "
|
171
|
+
- - "~>"
|
144
172
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
173
|
+
version: '3.6'
|
146
174
|
type: :development
|
147
175
|
prerelease: false
|
148
176
|
version_requirements: !ruby/object:Gem::Requirement
|
149
177
|
requirements:
|
150
|
-
- - "
|
178
|
+
- - "~>"
|
151
179
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
153
|
-
description:
|
180
|
+
version: '3.6'
|
181
|
+
description:
|
154
182
|
email:
|
155
|
-
- samuel.williams@oriontransfer.co.nz
|
156
183
|
executables: []
|
157
184
|
extensions: []
|
158
185
|
extra_rdoc_files: []
|
159
186
|
files:
|
160
|
-
- ".gitignore"
|
161
|
-
- ".rspec"
|
162
|
-
- ".travis.yml"
|
163
|
-
- Gemfile
|
164
|
-
- Gemfile.local
|
165
|
-
- README.md
|
166
|
-
- Rakefile
|
167
|
-
- build.gemspec
|
168
187
|
- lib/build.rb
|
169
188
|
- lib/build/build_node.rb
|
170
189
|
- lib/build/chain_node.rb
|
@@ -172,22 +191,17 @@ files:
|
|
172
191
|
- lib/build/dependency_node.rb
|
173
192
|
- lib/build/graphviz.rb
|
174
193
|
- lib/build/name.rb
|
194
|
+
- lib/build/provision_node.rb
|
175
195
|
- lib/build/rule.rb
|
176
196
|
- lib/build/rule_node.rb
|
177
197
|
- lib/build/rulebook.rb
|
178
198
|
- lib/build/task.rb
|
179
199
|
- lib/build/version.rb
|
180
|
-
|
181
|
-
- spec/build/name_spec.rb
|
182
|
-
- spec/build/rule_spec.rb
|
183
|
-
- spec/build/rulebook_spec.rb
|
184
|
-
- spec/build/target.rb
|
185
|
-
- spec/spec_helper.rb
|
186
|
-
homepage: ''
|
200
|
+
homepage: https://github.com/kurocha/build
|
187
201
|
licenses:
|
188
202
|
- MIT
|
189
203
|
metadata: {}
|
190
|
-
post_install_message:
|
204
|
+
post_install_message:
|
191
205
|
rdoc_options: []
|
192
206
|
require_paths:
|
193
207
|
- lib
|
@@ -202,14 +216,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
216
|
- !ruby/object:Gem::Version
|
203
217
|
version: '0'
|
204
218
|
requirements: []
|
205
|
-
rubygems_version: 3.
|
206
|
-
signing_key:
|
219
|
+
rubygems_version: 3.1.6
|
220
|
+
signing_key:
|
207
221
|
specification_version: 4
|
208
|
-
summary: Build is a framework for
|
209
|
-
test_files:
|
210
|
-
- spec/build/controller_spec.rb
|
211
|
-
- spec/build/name_spec.rb
|
212
|
-
- spec/build/rule_spec.rb
|
213
|
-
- spec/build/rulebook_spec.rb
|
214
|
-
- spec/build/target.rb
|
215
|
-
- spec/spec_helper.rb
|
222
|
+
summary: Build is a framework for creating task based build systems.
|
223
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|
data/.gitignore
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
|
-
Gemfile.lock
|
7
|
-
InstalledFiles
|
8
|
-
_yardoc
|
9
|
-
coverage
|
10
|
-
doc/
|
11
|
-
lib/bundler/man
|
12
|
-
pkg
|
13
|
-
rdoc
|
14
|
-
spec/reports
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
|
-
tmp
|
18
|
-
*.bundle
|
19
|
-
*.so
|
20
|
-
*.o
|
21
|
-
*.a
|
22
|
-
mkmf.log
|
23
|
-
.rspec_status
|
data/.rspec
DELETED
data/.travis.yml
DELETED
data/Gemfile
DELETED
data/Gemfile.local
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
# Specify your gem's dependencies in build.gemspec
|
4
|
-
gemspec
|
5
|
-
|
6
|
-
group :development do
|
7
|
-
gem 'pry'
|
8
|
-
gem 'pry-coolline'
|
9
|
-
|
10
|
-
gem 'build-environment', path: '../build-environment'
|
11
|
-
gem 'build-files', path: '../build-files'
|
12
|
-
gem 'build-graph', path: '../build-graph'
|
13
|
-
gem 'build-makefile', path: '../build-makefile'
|
14
|
-
|
15
|
-
gem 'process-daemon', path: '../process-daemon'
|
16
|
-
gem 'process-group', path: '../process-group'
|
17
|
-
|
18
|
-
gem 'graphviz', path: '../graphviz'
|
19
|
-
end
|
20
|
-
|
21
|
-
group :test do
|
22
|
-
gem 'simplecov'
|
23
|
-
gem 'coveralls', require: false
|
24
|
-
end
|
data/README.md
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
# Build
|
2
|
-
|
3
|
-
Build is a ruby gem providing systems for building task driven build systems similar to make.
|
4
|
-
|
5
|
-
[](http://travis-ci.org/ioquatix/build)
|
6
|
-
[](https://codeclimate.com/github/ioquatix/build)
|
7
|
-
[](https://coveralls.io/r/ioquatix/build)
|
8
|
-
|
9
|
-
## Installation
|
10
|
-
|
11
|
-
Add this line to your application's Gemfile:
|
12
|
-
|
13
|
-
gem 'build'
|
14
|
-
|
15
|
-
And then execute:
|
16
|
-
|
17
|
-
$ bundle
|
18
|
-
|
19
|
-
Or install it yourself as:
|
20
|
-
|
21
|
-
$ gem install build
|
22
|
-
|
23
|
-
## Usage
|
24
|
-
|
25
|
-
This gem is a container for `build-files` and `build-graph`.
|
26
|
-
|
27
|
-
## Contributing
|
28
|
-
|
29
|
-
1. Fork it
|
30
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
31
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
32
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
33
|
-
5. Create new Pull Request
|
34
|
-
|
35
|
-
## License
|
36
|
-
|
37
|
-
Released under the MIT license.
|
38
|
-
|
39
|
-
Copyright, 2015, by [Samuel G. D. Williams](http://www.codeotaku.com/samuel-williams).
|
40
|
-
|
41
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
42
|
-
of this software and associated documentation files (the "Software"), to deal
|
43
|
-
in the Software without restriction, including without limitation the rights
|
44
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
45
|
-
copies of the Software, and to permit persons to whom the Software is
|
46
|
-
furnished to do so, subject to the following conditions:
|
47
|
-
|
48
|
-
The above copyright notice and this permission notice shall be included in
|
49
|
-
all copies or substantial portions of the Software.
|
50
|
-
|
51
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
52
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
53
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
54
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
55
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
56
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
57
|
-
THE SOFTWARE.
|
data/Rakefile
DELETED
data/build.gemspec
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
|
2
|
-
require_relative 'lib/build/version'
|
3
|
-
|
4
|
-
Gem::Specification.new do |spec|
|
5
|
-
spec.name = "build"
|
6
|
-
spec.version = Build::VERSION
|
7
|
-
spec.authors = ["Samuel Williams"]
|
8
|
-
spec.email = ["samuel.williams@oriontransfer.co.nz"]
|
9
|
-
spec.summary = %q{Build is a framework for working with task based build systems.}
|
10
|
-
spec.homepage = ""
|
11
|
-
spec.license = "MIT"
|
12
|
-
|
13
|
-
spec.files = `git ls-files -z`.split("\x0")
|
14
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
15
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
16
|
-
spec.require_paths = ["lib"]
|
17
|
-
|
18
|
-
spec.required_ruby_version = '>= 2.0'
|
19
|
-
|
20
|
-
spec.add_dependency "build-graph", "~> 2.0"
|
21
|
-
spec.add_dependency "build-environment", "~> 1.3"
|
22
|
-
spec.add_dependency "build-dependency", "~> 1.4"
|
23
|
-
spec.add_dependency "build-makefile", "~> 1.0"
|
24
|
-
|
25
|
-
spec.add_dependency "graphviz", "~> 1.0"
|
26
|
-
spec.add_dependency "console", "~> 1.0"
|
27
|
-
|
28
|
-
spec.add_development_dependency "covered"
|
29
|
-
spec.add_development_dependency "bundler"
|
30
|
-
spec.add_development_dependency "rspec", "~> 3.6"
|
31
|
-
spec.add_development_dependency "rake"
|
32
|
-
end
|
@@ -1,129 +0,0 @@
|
|
1
|
-
#!/usr/bin/env rspec
|
2
|
-
|
3
|
-
# Copyright, 2015, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
4
|
-
#
|
5
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
# of this software and associated documentation files (the "Software"), to deal
|
7
|
-
# in the Software without restriction, including without limitation the rights
|
8
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
# copies of the Software, and to permit persons to whom the Software is
|
10
|
-
# furnished to do so, subject to the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be included in
|
13
|
-
# all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
# THE SOFTWARE.
|
22
|
-
|
23
|
-
require 'build/rulebook'
|
24
|
-
require 'build/controller'
|
25
|
-
|
26
|
-
require_relative 'target'
|
27
|
-
|
28
|
-
RSpec.describe Build::Controller do
|
29
|
-
let(:base) {Build::Environment.new(name: "base")}
|
30
|
-
|
31
|
-
context "failure exit status" do
|
32
|
-
let(:make_target) do
|
33
|
-
Target.new("make") do |target|
|
34
|
-
target.provides "make" do
|
35
|
-
define Build::Rule, "make.file" do
|
36
|
-
output :destination
|
37
|
-
|
38
|
-
apply do |parameters|
|
39
|
-
run! "exit -1"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
let(:build_target) do
|
47
|
-
Target.new("foo") do |target|
|
48
|
-
target.depends "make"
|
49
|
-
|
50
|
-
target.provides "foo" do
|
51
|
-
foo_path = Build::Files::Path['foo']
|
52
|
-
|
53
|
-
make destination: foo_path
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
it "build graph should fail" do
|
59
|
-
chain = Build::Dependency::Chain.expand(["foo"], [make_target, build_target])
|
60
|
-
|
61
|
-
controller = Build::Controller.new do |controller|
|
62
|
-
controller.add_chain(chain, [], base)
|
63
|
-
end
|
64
|
-
|
65
|
-
controller.logger.level = Logger::DEBUG
|
66
|
-
|
67
|
-
controller.update
|
68
|
-
|
69
|
-
expect(controller.failed?).to be_truthy
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context "copying files" do
|
74
|
-
let(:files_target) do
|
75
|
-
Target.new("files") do |target|
|
76
|
-
target.provides "files" do
|
77
|
-
define Build::Rule, "make.file" do
|
78
|
-
output :destination
|
79
|
-
|
80
|
-
apply do |parameters|
|
81
|
-
run! 'sleep 0.1'
|
82
|
-
touch parameters[:destination]
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
define Build::Rule, "copy.file" do
|
87
|
-
input :source
|
88
|
-
output :destination
|
89
|
-
|
90
|
-
apply do |parameters|
|
91
|
-
cp parameters[:source], parameters[:destination]
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
let(:build_target) do
|
99
|
-
Target.new("build") do |target|
|
100
|
-
target.depends "files"
|
101
|
-
|
102
|
-
target.provides "foo" do
|
103
|
-
foo_path = Build::Files::Path['foo']
|
104
|
-
bar_path = Build::Files::Path['bar']
|
105
|
-
|
106
|
-
make destination: foo_path
|
107
|
-
copy source: foo_path, destination: bar_path
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should execute the build graph" do
|
113
|
-
chain = Build::Dependency::Chain.expand(["foo"], [files_target, build_target])
|
114
|
-
|
115
|
-
controller = Build::Controller.new do |controller|
|
116
|
-
controller.add_chain(chain, [], base)
|
117
|
-
end
|
118
|
-
|
119
|
-
expect(controller.nodes.size).to be 1
|
120
|
-
|
121
|
-
controller.update
|
122
|
-
|
123
|
-
expect(File).to be_exist('foo')
|
124
|
-
expect(File).to be_exist('bar')
|
125
|
-
|
126
|
-
FileUtils.rm ['foo', 'bar']
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
data/spec/build/name_spec.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
2
|
-
#
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
# of this software and associated documentation files (the "Software"), to deal
|
5
|
-
# in the Software without restriction, including without limitation the rights
|
6
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
# copies of the Software, and to permit persons to whom the Software is
|
8
|
-
# furnished to do so, subject to the following conditions:
|
9
|
-
#
|
10
|
-
# The above copyright notice and this permission notice shall be included in
|
11
|
-
# all copies or substantial portions of the Software.
|
12
|
-
#
|
13
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
# THE SOFTWARE.
|
20
|
-
|
21
|
-
require 'build/name'
|
22
|
-
|
23
|
-
RSpec.describe Build::Name do
|
24
|
-
let(:name) {Build::Name.new('Foo Bar')}
|
25
|
-
it "retains the original text" do
|
26
|
-
expect(name.text).to be == 'Foo Bar'
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should generate useful identifiers" do
|
30
|
-
expect(name.identifier).to be == 'FooBar'
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should generate useful target names" do
|
34
|
-
expect(name.target).to be == 'foo-bar'
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should generate useful key names" do
|
38
|
-
expect(name.key('executable')).to be == 'foo_bar_executable'
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should generate useful macro names" do
|
42
|
-
expect(name.macro).to be == 'FOO_BAR'
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should generate useful macro names" do
|
46
|
-
expect(name.macro).to be == 'FOO_BAR'
|
47
|
-
end
|
48
|
-
|
49
|
-
it "can be constructed from target name" do
|
50
|
-
expect(Build::Name.from_target(name.target).text).to be == name.text
|
51
|
-
end
|
52
|
-
end
|
data/spec/build/rule_spec.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
# Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
2
|
-
#
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
# of this software and associated documentation files (the "Software"), to deal
|
5
|
-
# in the Software without restriction, including without limitation the rights
|
6
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
# copies of the Software, and to permit persons to whom the Software is
|
8
|
-
# furnished to do so, subject to the following conditions:
|
9
|
-
#
|
10
|
-
# The above copyright notice and this permission notice shall be included in
|
11
|
-
# all copies or substantial portions of the Software.
|
12
|
-
#
|
13
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
# THE SOFTWARE.
|
20
|
-
|
21
|
-
require 'build/rule'
|
22
|
-
|
23
|
-
RSpec.describe Build::Rule do
|
24
|
-
it "should validate input and output parameters" do
|
25
|
-
rule = Build::Rule.new("compile", "cpp")
|
26
|
-
|
27
|
-
rule.input :source
|
28
|
-
rule.output :destination
|
29
|
-
|
30
|
-
expect(rule.parameters.size).to be 2
|
31
|
-
|
32
|
-
expect(rule.applicable?(source: 'foo', destination: 'bar')).to be_truthy
|
33
|
-
expect(rule.applicable?(source: 'foo')).to be_falsey
|
34
|
-
end
|
35
|
-
|
36
|
-
it "respects false argument" do
|
37
|
-
rule = Build::Rule.new("compile", "cpp")
|
38
|
-
|
39
|
-
rule.parameter :install, default: true
|
40
|
-
|
41
|
-
expect(
|
42
|
-
rule.normalize({}, binding)
|
43
|
-
).to be == {install: true}
|
44
|
-
|
45
|
-
expect(
|
46
|
-
rule.normalize({install: true}, binding)
|
47
|
-
).to be == {install: true}
|
48
|
-
|
49
|
-
expect(
|
50
|
-
rule.normalize({install: false}, binding)
|
51
|
-
).to be == {install: false}
|
52
|
-
end
|
53
|
-
end
|
data/spec/build/rulebook_spec.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
2
|
-
#
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
# of this software and associated documentation files (the "Software"), to deal
|
5
|
-
# in the Software without restriction, including without limitation the rights
|
6
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
# copies of the Software, and to permit persons to whom the Software is
|
8
|
-
# furnished to do so, subject to the following conditions:
|
9
|
-
#
|
10
|
-
# The above copyright notice and this permission notice shall be included in
|
11
|
-
# all copies or substantial portions of the Software.
|
12
|
-
#
|
13
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
# THE SOFTWARE.
|
20
|
-
|
21
|
-
require 'build/environment'
|
22
|
-
require 'build/rulebook'
|
23
|
-
|
24
|
-
RSpec.describe Build::Rulebook do
|
25
|
-
it "should generate a valid rulebook" do
|
26
|
-
environment = Build::Environment.new do
|
27
|
-
define Build::Rule, "copy.file" do
|
28
|
-
input :source
|
29
|
-
output :destination
|
30
|
-
|
31
|
-
apply do |parameters|
|
32
|
-
cp parameters[:source], parameters[:destination]
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
define Build::Rule, "delete.file" do
|
37
|
-
input :target
|
38
|
-
|
39
|
-
apply do |parameters|
|
40
|
-
rm parameters[:target]
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
rulebook = Build::Rulebook.for(environment.flatten)
|
46
|
-
|
47
|
-
expect(rulebook.rules.size).to be 2
|
48
|
-
|
49
|
-
expect(rulebook.rules).to be_include 'copy.file'
|
50
|
-
expect(rulebook.rules).to be_include 'delete.file'
|
51
|
-
end
|
52
|
-
end
|
data/spec/build/target.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'build/dependency'
|
3
|
-
|
4
|
-
class Target
|
5
|
-
include Build::Dependency
|
6
|
-
|
7
|
-
def initialize(name = nil)
|
8
|
-
@name = name
|
9
|
-
|
10
|
-
if block_given?
|
11
|
-
yield self
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
attr :name
|
16
|
-
|
17
|
-
def inspect
|
18
|
-
"\#<#{self.class}: #{@name}>"
|
19
|
-
end
|
20
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'covered/rspec'
|
3
|
-
require 'build'
|
4
|
-
|
5
|
-
RSpec.configure do |config|
|
6
|
-
# Enable flags like --only-failures and --next-failure
|
7
|
-
config.example_status_persistence_file_path = ".rspec_status"
|
8
|
-
|
9
|
-
config.expect_with :rspec do |c|
|
10
|
-
c.syntax = :expect
|
11
|
-
end
|
12
|
-
end
|