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.
- checksums.yaml +4 -4
- data/lib/dry-stack/stack.rb +22 -16
- data/lib/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c71ef427e2a4703a3653ef4e804d4e7b6e3f96ebcdbbd238949f397680b0416
|
4
|
+
data.tar.gz: df2eb1ce11120dea1e973863c550e6cad37063bf9469563909ef17fd584f0131
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a006773cc22c9c1eb18bdb297bca0fef62436daf40c09129c28dec205565339820407c764fbf55ff3746ca1c6488c3958e304cd939d16913489adca33196ca4a
|
7
|
+
data.tar.gz: cc0350b67c82ae974fb0567d0722c32ceb91902677264ac69b88a38617f1868cfa1bb4574d35a66e74c32a225f7b208922173ec010d841596eb88709303c3f92
|
data/lib/dry-stack/stack.rb
CHANGED
@@ -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,
|
208
|
-
|
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
|
-
|
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