dry-stack 0.0.28 → 0.0.30
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/lib/dry-stack/stack.rb +23 -1
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f963ad419ec4bc9369167b55795a7567276b68562cbcd6c78cb0be12f3f23f7e
|
|
4
|
+
data.tar.gz: 5c533b595b8d277d57371a6277ca6c53e01781569344b8f3959b65b60cc233b5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c42cd31297f740d1c6ad10f90c3c1f2e17be118fd5e049b77a63acda3c8ef7b149e654983ad3a2a31425b011f0689aec2e389d0875b9d233764924506c47965d
|
|
7
|
+
data.tar.gz: 7d9d6459a9727727b24ae3515c5895ed34f6e348c5a7e9e9997daea04926d356f4c46e4c715bc00e263bb4976ae6e9c6a8b693f6534768ee44fd9e761a7c5877
|
data/lib/dry-stack/stack.rb
CHANGED
|
@@ -12,6 +12,7 @@ module Dry
|
|
|
12
12
|
class ServiceFunction
|
|
13
13
|
def initialize(service, &); @service = service; instance_exec(&) end
|
|
14
14
|
def env(variables)= @service[:environment].merge! variables
|
|
15
|
+
def volume(opts)= ((@service[:volumes] ||= []) << opts).flatten!
|
|
15
16
|
def image(name)= @service[:image] = name
|
|
16
17
|
def ports(ports)= ((@service[:ports] ||= []) << ports).flatten!
|
|
17
18
|
def command(cmd)= @service[:command] = cmd
|
|
@@ -36,12 +37,21 @@ module Dry
|
|
|
36
37
|
@options = {}
|
|
37
38
|
@services = {}
|
|
38
39
|
@networks = {}
|
|
40
|
+
@volumes = {}
|
|
39
41
|
@publish_ports = {}
|
|
40
42
|
@ingress = {}
|
|
41
43
|
@deploy = {}
|
|
44
|
+
@labels = {}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def stringify(obj)
|
|
48
|
+
case
|
|
49
|
+
when obj.is_a?(Hash); obj.to_h { |k, v| [k.to_s, stringify(v)] }
|
|
50
|
+
when obj.is_a?(Array); obj.map { stringify(_1) }
|
|
51
|
+
else obj
|
|
52
|
+
end
|
|
42
53
|
end
|
|
43
54
|
|
|
44
|
-
def stringify(hash) = hash.to_h { |k, v| [k.to_s, v.is_a?(Hash) ? stringify(v) : v] }
|
|
45
55
|
def expand_hash(hash)
|
|
46
56
|
hash.select { _1.to_s =~ /\./ }.each do |k, v|
|
|
47
57
|
name = k.to_s.scan(/([^\.]*)\.(.*)/).flatten
|
|
@@ -71,6 +81,7 @@ module Dry
|
|
|
71
81
|
# Not allowed by docker stack deploy
|
|
72
82
|
version: @version,
|
|
73
83
|
services: YAML.load(@services.to_yaml),
|
|
84
|
+
volumes: YAML.load(@volumes.to_yaml),
|
|
74
85
|
networks: YAML.load(@networks.to_yaml),
|
|
75
86
|
}
|
|
76
87
|
|
|
@@ -82,6 +93,7 @@ module Dry
|
|
|
82
93
|
@ingress[name][:port] ||= service[:ports]&.first if @ingress[name]
|
|
83
94
|
service[:deploy] ||= {}
|
|
84
95
|
service[:deploy][:labels] ||= []
|
|
96
|
+
service[:deploy][:labels] += @labels.map { "#{_1}=#{_2}" }
|
|
85
97
|
|
|
86
98
|
if @ingress[name] && (opts[:ingress] || opts[:traefik] || opts[:traefik_tls])
|
|
87
99
|
service[:networks] ||= []
|
|
@@ -160,6 +172,10 @@ module Dry
|
|
|
160
172
|
@options.merge! opts
|
|
161
173
|
end
|
|
162
174
|
|
|
175
|
+
def Labels(labels)
|
|
176
|
+
@labels.merge! labels
|
|
177
|
+
end
|
|
178
|
+
|
|
163
179
|
def Ingress(services)
|
|
164
180
|
@ingress.merge! services
|
|
165
181
|
end
|
|
@@ -173,6 +189,12 @@ module Dry
|
|
|
173
189
|
@networks[name].merge! opts
|
|
174
190
|
yield if block_given?
|
|
175
191
|
end
|
|
192
|
+
|
|
193
|
+
def Volume(name, opts = {})
|
|
194
|
+
@volumes[name] ||= {}
|
|
195
|
+
@volumes[name].merge! opts
|
|
196
|
+
yield if block_given?
|
|
197
|
+
end
|
|
176
198
|
end
|
|
177
199
|
end
|
|
178
200
|
|
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dry-stack
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.30
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Artyom B
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-02-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|