alki 0.13.1 → 0.13.2

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 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