alki 0.13.1 → 0.13.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3bbada7ba7f3a9320332e73d98ec87b1e19162ad
4
- data.tar.gz: 328c2661e806dee2d265da56e59e64683809954e
3
+ metadata.gz: c45abd42f73d63b3416055e3d9b7083a987a933d
4
+ data.tar.gz: 9eb429b7597cb856e731f0eb46a6e3094db4464a
5
5
  SHA512:
6
- metadata.gz: 9604a0947cb69443b966621bc337200e48dd9589e380b93039cc81af6fb5479316406d3c19a2112cfbfe72ae2d2b5f5d0e08201977d4ccfff6d23e31f166aaf0
7
- data.tar.gz: 235b0dc2ebd06d5be3d5d0777f25f0081f225e120e5b492c1172dd933ae26358d943d43562218bb5351a2d603507856159d3902f285ab4f414cae6724aba0861
6
+ metadata.gz: d15a85dc3d44267dafe127f76dd7c54faa594b163926ff2d8198afe3a2493297904d0d778b82bbd649ee0c47dea2f0aa18961c7ef3ad7be00f8ba66c846af854
7
+ data.tar.gz: 6bd49d1cd77f45018e376e059555f17b066d0c5be9c0cf40f6be653bb8518b737df5ef69811a673c0943aba3b1603bea42ae3ba84fce1d5127ade5c40ca8f3fd
@@ -14,7 +14,7 @@ module Alki
14
14
  overrides = inject_assembly_instance overrides, instance_wrapper
15
15
 
16
16
  executor.root = Types.build :assembly, assembly.root, overrides.root
17
- executor.meta = IceNine.deep_freeze(assembly.meta+overrides.meta)
17
+ executor.meta = IceNine.deep_freeze(assembly.meta.dup.append! overrides.meta)
18
18
 
19
19
  executor.call [:assembly_instance]
20
20
  end
@@ -24,7 +24,7 @@ module Alki
24
24
  def inject_assembly_instance(overrides,instance_wrapper)
25
25
  root = overrides.root.dup
26
26
  root.children = root.children.merge(assembly_instance: assembly_instance)
27
- meta = overrides.meta + [wrap_assembly_instance(instance_wrapper)]
27
+ meta = wrap_assembly_instance(overrides.meta,instance_wrapper)
28
28
  Overrides.new(root,meta)
29
29
  end
30
30
 
@@ -32,13 +32,13 @@ module Alki
32
32
  Types.build(:service,-> { root })
33
33
  end
34
34
 
35
- def wrap_assembly_instance(wrapper)
36
- [[],Meta::Overlay.new(
35
+ def wrap_assembly_instance(meta,wrapper)
36
+ meta.dup.add Meta::Overlay.new(
37
37
  :value,
38
38
  [:assembly_instance],
39
39
  wrapper,
40
40
  []
41
- )]
41
+ )
42
42
  end
43
43
  end
44
44
  end
@@ -0,0 +1,52 @@
1
+ module Alki
2
+ module Assembly
3
+ class MetaList
4
+ attr_reader :list
5
+
6
+ def initialize(list = [])
7
+ @list = list
8
+ end
9
+
10
+ def add(name=nil,meta)
11
+ path = name ? [name.to_sym] : []
12
+ @list << [path,meta]
13
+ self
14
+ end
15
+
16
+ def prefix(*prefix)
17
+ @list.each do |(path,_)|
18
+ path.unshift *prefix
19
+ end
20
+ self
21
+ end
22
+
23
+ def append(*prefix, meta_list)
24
+ append! *prefix, meta_list.dup
25
+ self
26
+ end
27
+
28
+ def append!(*prefix, meta_list)
29
+ @list.push *meta_list.prefix(*prefix).list
30
+ self
31
+ end
32
+
33
+ def each
34
+ enum_for(:each) unless block_given?
35
+ @list.each do |(path,meta)|
36
+ yield path, meta
37
+ end
38
+ self
39
+ end
40
+
41
+ def to_a
42
+ @list.map do |(path,meta)|
43
+ [path.dup,meta]
44
+ end
45
+ end
46
+
47
+ def dup
48
+ self.class.new to_a
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,11 +1,12 @@
1
1
  require 'alki/override_builder'
2
2
  require 'alki/support'
3
3
  require 'alki/overlay_info'
4
+ require 'alki/assembly/meta_list'
4
5
 
5
6
  Alki do
6
7
  init do
7
8
  ctx[:root] = build(:group,{})
8
- ctx[:meta] = []
9
+ ctx[:meta] = Alki::Assembly::MetaList.new
9
10
  ctx[:addons] ||= []
10
11
  ctx[:addons].each do |addon|
11
12
  require_dsl addon
@@ -14,7 +15,7 @@ Alki do
14
15
 
15
16
  helper :add do |name,elem|
16
17
  if defined?(@tags) && @tags
17
- ctx[:meta] << [[name.to_sym],build_meta(:tags,@tags)]
18
+ ctx[:meta].add name, build_meta(:tags,@tags)
18
19
  @tags = nil
19
20
  end
20
21
  ctx[:root].children[name.to_sym] = elem
@@ -30,15 +31,12 @@ Alki do
30
31
  end
31
32
 
32
33
  helper :add_overlay do |type,target,overlay,args|
33
- (ctx[:meta]||=[]) << [
34
- [],
35
- build_meta(
36
- :overlay,
37
- type, target.to_s.split('.').map(&:to_sym),
38
- overlay.to_s.split('.').map(&:to_sym),
39
- args
40
- )
41
- ]
34
+ ctx[:meta].add build_meta(
35
+ :overlay,
36
+ type, target.to_s.split('.').map(&:to_sym),
37
+ overlay.to_s.split('.').map(&:to_sym),
38
+ args
39
+ )
42
40
  end
43
41
 
44
42
  helper :prefix_meta do |*prefix,meta|
@@ -48,10 +46,6 @@ Alki do
48
46
  meta
49
47
  end
50
48
 
51
- helper :update_meta do |*prefix,meta|
52
- ctx[:meta].push *prefix_meta(*prefix,meta)
53
- end
54
-
55
49
  dsl_method :use do |addon_name|
56
50
  addon = Alki.load addon_name
57
51
  if addon.respond_to?(:alki_addon)
@@ -96,7 +90,7 @@ Alki do
96
90
  dsl_method :group do |name,&blk|
97
91
  grp = Alki::Dsls::AssemblyGroup.build(addons: ctx[:addons], &blk)
98
92
  add name, grp[:root]
99
- update_meta name, grp[:meta]
93
+ ctx[:meta].append! name, grp[:meta]
100
94
  end
101
95
 
102
96
  dsl_method :auto_group do |name,dir,callable,*args|
@@ -124,18 +118,15 @@ Alki do
124
118
  end
125
119
  grp = Alki.load(File.join(ctx[:prefix],name))
126
120
  add group_name, grp.root
127
- update_meta group_name, grp.meta
121
+ ctx[:meta].append group_name, grp.meta
128
122
  end
129
123
 
130
124
  dsl_method :mount do |name,pkg=name.to_s,**overrides,&blk|
131
125
  klass = Alki.load pkg
132
- mounted_meta = klass.meta.map do |(path,type,info)|
133
- [path.dup,type,info]
134
- end
135
- update_meta name, mounted_meta
126
+ ctx[:meta].append name, klass.meta
136
127
 
137
128
  overrides = Alki::OverrideBuilder.build overrides, &blk
138
- update_meta name, overrides.meta
129
+ ctx[:meta].append! name, overrides.meta
139
130
 
140
131
  add name, build(:assembly, klass.root, overrides.root)
141
132
  end
data/lib/alki/executor.rb CHANGED
@@ -90,7 +90,7 @@ module Alki
90
90
  def data_copy
91
91
  unless @data
92
92
  @data = {}
93
- @meta.each do |(from,meta)|
93
+ @meta.each do |from, meta|
94
94
  meta.process self, from, @data
95
95
  end
96
96
  IceNine.deep_freeze @data
@@ -1,6 +1,7 @@
1
1
  require 'alki/dsl'
2
2
  require 'alki/overrides'
3
3
  require 'alki/assembly/types'
4
+ require 'alki/assembly/meta_list'
4
5
 
5
6
  module Alki
6
7
  module OverrideBuilder
@@ -10,9 +11,9 @@ module Alki
10
11
  data = Alki::Dsl.build('alki/dsls/assembly_group',&blk)
11
12
  Overrides.new data[:root], data[:meta]
12
13
  elsif override_hash && !override_hash.empty?
13
- Overrides.new create_override_group(override_hash), []
14
+ Overrides.new create_override_group(override_hash), Alki::Assembly::MetaList.new
14
15
  else
15
- Overrides.new build_type(:group), []
16
+ Overrides.new build_type(:group), Alki::Assembly::MetaList.new
16
17
  end
17
18
  end
18
19
 
data/lib/alki/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Alki
2
- VERSION = "0.13.1"
2
+ VERSION = "0.13.2"
3
3
  end
@@ -10,7 +10,6 @@ Alki do
10
10
 
11
11
  num_handler :fizz, 3
12
12
 
13
-
14
13
  group :handlers do
15
14
  num_handler :buzz, 5
16
15
  end
@@ -23,6 +22,7 @@ Alki do
23
22
  num_handler 15, settings.fizzbuzz
24
23
  end
25
24
 
25
+ tag :io
26
26
  service :echo do
27
27
  require 'example/echo_handler'
28
28
  Example::EchoHandler.new output
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.13.2
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-22 00:00:00.000000000 Z
11
+ date: 2017-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alki-dsl
@@ -104,6 +104,7 @@ files:
104
104
  - lib/alki/assembly/instance_builder.rb
105
105
  - lib/alki/assembly/meta/overlay.rb
106
106
  - lib/alki/assembly/meta/tags.rb
107
+ - lib/alki/assembly/meta_list.rb
107
108
  - lib/alki/assembly/type.rb
108
109
  - lib/alki/assembly/types.rb
109
110
  - lib/alki/assembly/types/assembly.rb