dry-stack 0.0.55 → 0.0.57

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dry-stack/stack.rb +22 -16
  3. data/lib/version.rb +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c7d2d41bcd06f472670d0ccd39d48aa522ba263a52bf261e9ddeb0c8706a7c3
4
- data.tar.gz: c8d0f679e1403247ee48ef9fc7f071fb2ae27b3f028f08e3690144465453f9f6
3
+ metadata.gz: 3c71ef427e2a4703a3653ef4e804d4e7b6e3f96ebcdbbd238949f397680b0416
4
+ data.tar.gz: df2eb1ce11120dea1e973863c550e6cad37063bf9469563909ef17fd584f0131
5
5
  SHA512:
6
- metadata.gz: 6562bd497bdeb86b5a526f995a2f19505973add70464f3859779d4359430f7a14f5ab898e771684127461b33655654cc2769d4d6f034f3225f8b7297046c1635
7
- data.tar.gz: e88f4d9a6df6aaa2188ca62b07e9891dfd156a36dd705dd074f5306ab3a5b6a6c0027ab98d12b782a42ad4815e3cb94917cd9b62be32c6a4bf8214be58e77fb6
6
+ metadata.gz: a006773cc22c9c1eb18bdb297bca0fef62436daf40c09129c28dec205565339820407c764fbf55ff3746ca1c6488c3958e304cd939d16913489adca33196ca4a
7
+ data.tar.gz: cc0350b67c82ae974fb0567d0722c32ceb91902677264ac69b88a38617f1868cfa1bb4574d35a66e74c32a225f7b208922173ec010d841596eb88709303c3f92
@@ -59,6 +59,7 @@ module Dry
59
59
  @services = {}
60
60
  @networks = {}
61
61
  @volumes = {}
62
+ @environment = {}
62
63
  @publish_ports = {}
63
64
  @ingress = {}
64
65
  @deploy = {}
@@ -67,14 +68,6 @@ module Dry
67
68
  @logging = {}
68
69
  end
69
70
 
70
- def stringify(obj)
71
- case
72
- when obj.is_a?(Hash); obj.to_h { |k, v| [k.to_s, stringify(v)] }
73
- when obj.is_a?(Array); obj.map { stringify(_1) }
74
- else obj
75
- end
76
- end
77
-
78
71
  def expand_hash(hash)
79
72
  hash.select { _1.to_s =~ /\./ }.each do |k, v|
80
73
  name = k.to_s.scan(/([^\.]*)\.(.*)/).flatten
@@ -132,15 +125,11 @@ module Dry
132
125
  end
133
126
  end
134
127
 
135
- if ingress[0] && opts[:ingress]
136
- ingress[0][:port] ||= service[:ports]&.first
137
- service[:deploy][:labels] = ingress[0]&.map { |k, v| "ingress.#{k}=#{v}" }
138
- end
139
-
140
128
  service_name = "#{@name}_#{name}"
141
129
 
142
130
  if ingress[0] && (opts[:traefik] || opts[:traefik_tls])
143
131
  service[:deploy][:labels] << 'traefik.enable=true'
132
+ ingress[0][:port] ||= service[:ports]&.first
144
133
 
145
134
  ingress.each_with_index do |ing, index|
146
135
  ing[:port] ||= service[:ports]&.first
@@ -183,6 +172,9 @@ module Dry
183
172
  service[:ports] = pp_i&.zip(service[:ports] || pp_i)&.map { _1.join ':' }
184
173
  service[:ports] = (service[:ports] || []) + pp_s unless pp_s.nil?
185
174
 
175
+ service[:environment] = @environment[name].merge(service[:environment]) if @environment[name]
176
+ service[:environment].merge! STACK_NAME: @name, STACK_SERVICE_NAME: name
177
+
186
178
  service[:environment].transform_values! { !!_1 == _1 ? _1.to_s : _1 } # (false|true) to string
187
179
  service[:logging] ||= @logging[name.to_sym]
188
180
  end
@@ -204,11 +196,15 @@ module Dry
204
196
  }
205
197
  prune[compose]
206
198
 
207
- each_recursive compose do |_path, node, _v|
208
- _path.last[node] = _v.to_s if node.to_s == 'fluentd-async'
199
+ each_recursive _root: compose do |_path, node, v|
200
+ v.transform_keys!(&:to_s) if v.is_a? Hash
201
+ node.transform_keys!(&:to_s) if node.is_a? Hash
202
+ _path.last[node] = v.to_s if v.is_a? Symbol
203
+
204
+ _path.last[node] = v.to_s if node.to_s == 'fluentd-async'
209
205
  end
210
206
 
211
- stringify(compose).to_yaml
207
+ compose.to_yaml
212
208
  end
213
209
 
214
210
  def PublishPorts(ports)
@@ -256,6 +252,16 @@ module Dry
256
252
  end
257
253
  end
258
254
 
255
+ def Environment(names = nil, envs)
256
+ if names
257
+ [names].flatten.each do |name|
258
+ (@environment[name.to_sym] ||= {}).merge! envs
259
+ end
260
+ else
261
+ @environment.merge! envs
262
+ end
263
+ end
264
+
259
265
  def Network(name, opts = {})
260
266
  @networks[name] ||= {}
261
267
  @networks[name].merge! opts
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.55'
3
+ VERSION = '0.0.57'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.55
4
+ version: 0.0.57
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B