alki 0.12.0 → 0.12.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
- data/Gemfile +1 -0
- data/README.adoc +132 -20
- data/Rakefile +2 -27
- data/alki.gemspec +1 -3
- data/bin/bundler +17 -0
- data/bin/rake +17 -0
- data/doc/assemblies.adoc +2 -3
- data/doc/assembly_dsl.adoc +191 -30
- data/doc/{projects.adoc → executables.adoc} +40 -16
- data/doc/index.adoc +4 -3
- data/lib/alki.rb +3 -0
- data/lib/alki/assembly.rb +4 -34
- data/lib/alki/assembly/builder.rb +3 -3
- data/lib/alki/assembly/instance.rb +31 -5
- data/lib/alki/assembly/instance_builder.rb +48 -0
- data/lib/alki/assembly/meta/overlay.rb +7 -2
- data/lib/alki/assembly/meta/tags.rb +4 -4
- data/lib/alki/assembly/types.rb +9 -0
- data/lib/alki/assembly/types/assembly.rb +3 -3
- data/lib/alki/assembly/types/group.rb +16 -25
- data/lib/alki/assembly/types/original.rb +12 -0
- data/lib/alki/assembly/types/override.rb +0 -2
- data/lib/alki/assembly/types/service.rb +4 -4
- data/lib/alki/circular_reference_error.rb +25 -0
- data/lib/alki/dsls/assembly.rb +1 -1
- data/lib/alki/dsls/assembly_group.rb +28 -12
- data/lib/alki/execution/context_class_builder.rb +1 -1
- data/lib/alki/execution/helpers.rb +4 -4
- data/lib/alki/execution/overlay_map.rb +37 -0
- data/lib/alki/execution/tag_map.rb +42 -0
- data/lib/alki/executor.rb +140 -0
- data/lib/alki/override_builder.rb +30 -24
- data/lib/alki/overrides.rb +4 -0
- data/lib/alki/version.rb +1 -1
- data/test/feature/mounts_test.rb +15 -0
- data/test/feature/multithreading_test.rb +0 -3
- data/test/feature/overlays_test.rb +2 -2
- data/test/feature/overrides_test.rb +26 -1
- data/test/feature/references_test.rb +35 -0
- data/test/feature/try_mounts_test.rb +23 -0
- data/test/feature/values_test.rb +14 -0
- data/test/feature_test_helper.rb +1 -0
- data/test/fixtures/example/config/assembly.rb +17 -8
- data/test/fixtures/example/config/handlers.rb +10 -5
- data/test/fixtures/example/lib/dsls/num_handler.rb +2 -2
- data/test/fixtures/example/lib/example/array_output.rb +13 -0
- data/test/fixtures/example/lib/example/echo_handler.rb +11 -0
- data/test/fixtures/example/lib/example/log_overlay.rb +12 -0
- data/test/fixtures/example/lib/example/num_handler.rb +13 -0
- data/test/fixtures/example/lib/example/range_handler.rb +13 -0
- data/test/fixtures/example/lib/example/switch_handler.rb +11 -0
- metadata +39 -44
- data/lib/alki/assembly/executor.rb +0 -137
- data/test/fixtures/example/lib/array_output.rb +0 -11
- data/test/fixtures/example/lib/echo_handler.rb +0 -9
- data/test/fixtures/example/lib/log_overlay.rb +0 -10
- data/test/fixtures/example/lib/num_handler.rb +0 -11
- data/test/fixtures/example/lib/range_handler.rb +0 -11
- data/test/fixtures/example/lib/switch_handler.rb +0 -9
data/lib/alki/version.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'alki/feature_test'
|
2
|
+
|
3
|
+
describe 'Mounts' do
|
4
|
+
it 'should attach assembly to main assembly as a group' do
|
5
|
+
Alki.create_assembly(name: 'alki_test') do
|
6
|
+
set :val, :test
|
7
|
+
end
|
8
|
+
|
9
|
+
assembly = Alki.singleton_assembly do
|
10
|
+
mount :mounted, AlkiTest
|
11
|
+
end
|
12
|
+
|
13
|
+
assembly.mounted.val.must_equal :test
|
14
|
+
end
|
15
|
+
end
|
@@ -196,12 +196,12 @@ describe 'Overlays' do
|
|
196
196
|
:test
|
197
197
|
end
|
198
198
|
mount :mounted, child do
|
199
|
-
overlay '
|
199
|
+
overlay 'svc1', :test_overlay
|
200
200
|
set :test_overlay, ->(value) {:parent}
|
201
201
|
end
|
202
202
|
end
|
203
203
|
obj = assembly.new do
|
204
|
-
overlay '
|
204
|
+
overlay 'svc2', :test_overlay
|
205
205
|
set :test_overlay, ->(value) {:child}
|
206
206
|
end
|
207
207
|
obj.svc2.must_equal :child
|
@@ -5,6 +5,10 @@ require 'stringio'
|
|
5
5
|
describe 'Overrides' do
|
6
6
|
before do
|
7
7
|
@assembly = Alki.create_assembly do
|
8
|
+
set :val do
|
9
|
+
:value
|
10
|
+
end
|
11
|
+
|
8
12
|
set :log_io do
|
9
13
|
raise "Must set log_io"
|
10
14
|
end
|
@@ -39,11 +43,32 @@ describe 'Overrides' do
|
|
39
43
|
set :log_io, io
|
40
44
|
group :util do
|
41
45
|
service :logger do
|
42
|
-
logger_class.new
|
46
|
+
logger_class.new log_io
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|
46
50
|
instance.util.logger.info "test"
|
47
51
|
io.string.must_equal "INFO test"
|
48
52
|
end
|
53
|
+
|
54
|
+
it 'should allow calling original when mounted' do
|
55
|
+
other = @assembly
|
56
|
+
instance = Alki.singleton_assembly do
|
57
|
+
mount :assembly, other do
|
58
|
+
set :val do
|
59
|
+
original.val
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
instance.assembly.val.must_equal :value
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should allow calling original service' do
|
67
|
+
instance = @assembly.new do
|
68
|
+
set :val do
|
69
|
+
original.val
|
70
|
+
end
|
71
|
+
end
|
72
|
+
instance.val.must_equal :value
|
73
|
+
end
|
49
74
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'alki/feature_test'
|
2
|
+
|
3
|
+
describe 'References' do
|
4
|
+
describe 'circular references' do
|
5
|
+
before do
|
6
|
+
@assembly = Alki.singleton_assembly do
|
7
|
+
set :a do
|
8
|
+
b
|
9
|
+
end
|
10
|
+
|
11
|
+
set :b do
|
12
|
+
c
|
13
|
+
end
|
14
|
+
|
15
|
+
set :c do
|
16
|
+
a
|
17
|
+
end
|
18
|
+
|
19
|
+
set :d do
|
20
|
+
a
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should raise CircularReferenceError' do
|
26
|
+
err = assert_raises Alki::CircularReferenceError do
|
27
|
+
@assembly.d
|
28
|
+
end
|
29
|
+
|
30
|
+
err.to_s.split("\n")[1..-1].must_equal(
|
31
|
+
[ ' d', '> a', ' b', ' c', '> a' ]
|
32
|
+
)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'alki/feature_test'
|
2
|
+
|
3
|
+
describe 'Try mounts' do
|
4
|
+
it 'should not mount if other assembly can be found' do
|
5
|
+
obj = Alki.singleton_assembly do
|
6
|
+
try_mount :other, 'missing_assembly'
|
7
|
+
set :val do
|
8
|
+
respond_to? :other
|
9
|
+
end
|
10
|
+
end
|
11
|
+
obj.val.must_equal false
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should mount if other assembly can be found' do
|
15
|
+
obj = Alki.singleton_assembly do
|
16
|
+
try_mount :other, 'example' # example fixture assembly
|
17
|
+
set :val do
|
18
|
+
respond_to? :other
|
19
|
+
end
|
20
|
+
end
|
21
|
+
obj.val.must_equal true
|
22
|
+
end
|
23
|
+
end
|
data/test/feature_test_helper.rb
CHANGED
@@ -5,17 +5,26 @@ Alki do
|
|
5
5
|
load :handlers
|
6
6
|
|
7
7
|
factory :log_overlay do
|
8
|
-
require 'log_overlay'
|
8
|
+
require 'example/log_overlay'
|
9
9
|
-> (obj) {
|
10
|
-
|
10
|
+
# Don't overlay services in subgroups (names with multiple periods)
|
11
|
+
if meta[:building] =~ /\..*\./
|
12
|
+
obj
|
13
|
+
else
|
14
|
+
alki.delegate_overlay(
|
15
|
+
obj,
|
16
|
+
Example::LogOverlay.new(log),
|
17
|
+
name: meta[:building]
|
18
|
+
)
|
19
|
+
end
|
11
20
|
}
|
12
21
|
end
|
13
22
|
|
14
23
|
overlay :handlers, :log_overlay
|
15
24
|
|
16
25
|
service :handler do
|
17
|
-
require 'switch_handler'
|
18
|
-
SwitchHandler.new [
|
26
|
+
require 'example/switch_handler'
|
27
|
+
Example::SwitchHandler.new [
|
19
28
|
handlers.fizzbuzz,
|
20
29
|
handlers.fizz,
|
21
30
|
handlers.buzz,
|
@@ -28,13 +37,13 @@ Alki do
|
|
28
37
|
end
|
29
38
|
|
30
39
|
service :range_handler do
|
31
|
-
require 'range_handler'
|
32
|
-
RangeHandler.new lazy('handler')
|
40
|
+
require 'example/range_handler'
|
41
|
+
Example::RangeHandler.new lazy('handler')
|
33
42
|
end
|
34
43
|
|
35
44
|
service :output do
|
36
|
-
require 'array_output'
|
37
|
-
ArrayOutput.new
|
45
|
+
require 'example/array_output'
|
46
|
+
Example::ArrayOutput.new
|
38
47
|
end
|
39
48
|
|
40
49
|
service :log_io do
|
@@ -2,16 +2,21 @@ Alki do
|
|
2
2
|
use 'example/dsls/num_handler'
|
3
3
|
|
4
4
|
factory :num_handler do
|
5
|
-
require 'num_handler'
|
5
|
+
require 'example/num_handler'
|
6
6
|
-> (num,str) {
|
7
|
-
NumHandler.new(num, str, output)
|
7
|
+
Example::NumHandler.new(num, str, output)
|
8
8
|
}
|
9
9
|
end
|
10
10
|
|
11
11
|
num_handler :fizz, 3
|
12
12
|
|
13
|
+
|
14
|
+
group :handlers do
|
15
|
+
num_handler :buzz, 5
|
16
|
+
end
|
17
|
+
|
13
18
|
service :buzz do
|
14
|
-
|
19
|
+
handlers.buzz
|
15
20
|
end
|
16
21
|
|
17
22
|
service :fizzbuzz do
|
@@ -19,7 +24,7 @@ Alki do
|
|
19
24
|
end
|
20
25
|
|
21
26
|
service :echo do
|
22
|
-
require 'echo_handler'
|
23
|
-
EchoHandler.new output
|
27
|
+
require 'example/echo_handler'
|
28
|
+
Example::EchoHandler.new output
|
24
29
|
end
|
25
30
|
end
|
metadata
CHANGED
@@ -1,43 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alki
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Edlefsen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.6'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.6'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.0'
|
41
13
|
- !ruby/object:Gem::Dependency
|
42
14
|
name: alki-dsl
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,6 +17,9 @@ dependencies:
|
|
45
17
|
- - "~>"
|
46
18
|
- !ruby/object:Gem::Version
|
47
19
|
version: '0.5'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.5.1
|
48
23
|
type: :runtime
|
49
24
|
prerelease: false
|
50
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -52,6 +27,9 @@ dependencies:
|
|
52
27
|
- - "~>"
|
53
28
|
- !ruby/object:Gem::Version
|
54
29
|
version: '0.5'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.5.1
|
55
33
|
- !ruby/object:Gem::Dependency
|
56
34
|
name: alki-support
|
57
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,30 +88,35 @@ files:
|
|
110
88
|
- Rakefile
|
111
89
|
- alki.gemspec
|
112
90
|
- bin/alki
|
91
|
+
- bin/bundler
|
92
|
+
- bin/rake
|
113
93
|
- config/assembly.rb
|
114
94
|
- doc/assemblies.adoc
|
115
95
|
- doc/assembly_dsl.adoc
|
96
|
+
- doc/executables.adoc
|
116
97
|
- doc/index.adoc
|
117
|
-
- doc/projects.adoc
|
118
98
|
- exe/alki
|
119
99
|
- lib/alki.rb
|
120
100
|
- lib/alki/assembly.rb
|
121
101
|
- lib/alki/assembly/builder.rb
|
122
|
-
- lib/alki/assembly/executor.rb
|
123
102
|
- lib/alki/assembly/handler.rb
|
124
103
|
- lib/alki/assembly/instance.rb
|
104
|
+
- lib/alki/assembly/instance_builder.rb
|
125
105
|
- lib/alki/assembly/meta/overlay.rb
|
126
106
|
- lib/alki/assembly/meta/tags.rb
|
127
107
|
- lib/alki/assembly/type.rb
|
108
|
+
- lib/alki/assembly/types.rb
|
128
109
|
- lib/alki/assembly/types/assembly.rb
|
129
110
|
- lib/alki/assembly/types/factory.rb
|
130
111
|
- lib/alki/assembly/types/func.rb
|
131
112
|
- lib/alki/assembly/types/group.rb
|
113
|
+
- lib/alki/assembly/types/original.rb
|
132
114
|
- lib/alki/assembly/types/override.rb
|
133
115
|
- lib/alki/assembly/types/proc_value.rb
|
134
116
|
- lib/alki/assembly/types/service.rb
|
135
117
|
- lib/alki/assembly/types/value.rb
|
136
118
|
- lib/alki/bin.rb
|
119
|
+
- lib/alki/circular_reference_error.rb
|
137
120
|
- lib/alki/dsls/assembly.rb
|
138
121
|
- lib/alki/dsls/assembly_group.rb
|
139
122
|
- lib/alki/dsls/assembly_type.rb
|
@@ -143,13 +126,17 @@ files:
|
|
143
126
|
- lib/alki/execution/context_class_builder.rb
|
144
127
|
- lib/alki/execution/factory.rb
|
145
128
|
- lib/alki/execution/helpers.rb
|
129
|
+
- lib/alki/execution/overlay_map.rb
|
146
130
|
- lib/alki/execution/reference.rb
|
131
|
+
- lib/alki/execution/tag_map.rb
|
147
132
|
- lib/alki/execution/value_helpers.rb
|
133
|
+
- lib/alki/executor.rb
|
148
134
|
- lib/alki/generator.rb
|
149
135
|
- lib/alki/invalid_path_error.rb
|
150
136
|
- lib/alki/overlay_delegator.rb
|
151
137
|
- lib/alki/overlay_info.rb
|
152
138
|
- lib/alki/override_builder.rb
|
139
|
+
- lib/alki/overrides.rb
|
153
140
|
- lib/alki/service_delegator.rb
|
154
141
|
- lib/alki/version.rb
|
155
142
|
- lib/alki_loader.rb
|
@@ -157,13 +144,17 @@ files:
|
|
157
144
|
- test/feature/auto_group_test.rb
|
158
145
|
- test/feature/example_test.rb
|
159
146
|
- test/feature/factories_test.rb
|
147
|
+
- test/feature/mounts_test.rb
|
160
148
|
- test/feature/multithreading_test.rb
|
161
149
|
- test/feature/overlays_test.rb
|
162
150
|
- test/feature/overrides_test.rb
|
163
151
|
- test/feature/pseudo_elements_test.rb
|
164
152
|
- test/feature/reference_overlays_test.rb
|
153
|
+
- test/feature/references_test.rb
|
165
154
|
- test/feature/reload_test.rb
|
166
155
|
- test/feature/tags_test.rb
|
156
|
+
- test/feature/try_mounts_test.rb
|
157
|
+
- test/feature/values_test.rb
|
167
158
|
- test/feature_test_helper.rb
|
168
159
|
- test/fixtures/auto_group/lib/alki_loader.rb
|
169
160
|
- test/fixtures/auto_group/lib/auto_group_dsl.rb
|
@@ -173,14 +164,14 @@ files:
|
|
173
164
|
- test/fixtures/example/config/handlers.rb
|
174
165
|
- test/fixtures/example/config/settings.rb
|
175
166
|
- test/fixtures/example/lib/alki_loader.rb
|
176
|
-
- test/fixtures/example/lib/array_output.rb
|
177
167
|
- test/fixtures/example/lib/dsls/num_handler.rb
|
178
|
-
- test/fixtures/example/lib/echo_handler.rb
|
179
168
|
- test/fixtures/example/lib/example.rb
|
180
|
-
- test/fixtures/example/lib/
|
181
|
-
- test/fixtures/example/lib/
|
182
|
-
- test/fixtures/example/lib/
|
183
|
-
- test/fixtures/example/lib/
|
169
|
+
- test/fixtures/example/lib/example/array_output.rb
|
170
|
+
- test/fixtures/example/lib/example/echo_handler.rb
|
171
|
+
- test/fixtures/example/lib/example/log_overlay.rb
|
172
|
+
- test/fixtures/example/lib/example/num_handler.rb
|
173
|
+
- test/fixtures/example/lib/example/range_handler.rb
|
174
|
+
- test/fixtures/example/lib/example/switch_handler.rb
|
184
175
|
- test/fixtures/tlogger/config/assembly.rb
|
185
176
|
- test/fixtures/tlogger/lib/tlogger.rb
|
186
177
|
- test/integration/dsls/assembly_test.rb
|
@@ -215,13 +206,17 @@ test_files:
|
|
215
206
|
- test/feature/auto_group_test.rb
|
216
207
|
- test/feature/example_test.rb
|
217
208
|
- test/feature/factories_test.rb
|
209
|
+
- test/feature/mounts_test.rb
|
218
210
|
- test/feature/multithreading_test.rb
|
219
211
|
- test/feature/overlays_test.rb
|
220
212
|
- test/feature/overrides_test.rb
|
221
213
|
- test/feature/pseudo_elements_test.rb
|
222
214
|
- test/feature/reference_overlays_test.rb
|
215
|
+
- test/feature/references_test.rb
|
223
216
|
- test/feature/reload_test.rb
|
224
217
|
- test/feature/tags_test.rb
|
218
|
+
- test/feature/try_mounts_test.rb
|
219
|
+
- test/feature/values_test.rb
|
225
220
|
- test/feature_test_helper.rb
|
226
221
|
- test/fixtures/auto_group/lib/alki_loader.rb
|
227
222
|
- test/fixtures/auto_group/lib/auto_group_dsl.rb
|
@@ -231,14 +226,14 @@ test_files:
|
|
231
226
|
- test/fixtures/example/config/handlers.rb
|
232
227
|
- test/fixtures/example/config/settings.rb
|
233
228
|
- test/fixtures/example/lib/alki_loader.rb
|
234
|
-
- test/fixtures/example/lib/array_output.rb
|
235
229
|
- test/fixtures/example/lib/dsls/num_handler.rb
|
236
|
-
- test/fixtures/example/lib/echo_handler.rb
|
237
230
|
- test/fixtures/example/lib/example.rb
|
238
|
-
- test/fixtures/example/lib/
|
239
|
-
- test/fixtures/example/lib/
|
240
|
-
- test/fixtures/example/lib/
|
241
|
-
- test/fixtures/example/lib/
|
231
|
+
- test/fixtures/example/lib/example/array_output.rb
|
232
|
+
- test/fixtures/example/lib/example/echo_handler.rb
|
233
|
+
- test/fixtures/example/lib/example/log_overlay.rb
|
234
|
+
- test/fixtures/example/lib/example/num_handler.rb
|
235
|
+
- test/fixtures/example/lib/example/range_handler.rb
|
236
|
+
- test/fixtures/example/lib/example/switch_handler.rb
|
242
237
|
- test/fixtures/tlogger/config/assembly.rb
|
243
238
|
- test/fixtures/tlogger/lib/tlogger.rb
|
244
239
|
- test/integration/dsls/assembly_test.rb
|