dry-stack 0.0.28 → 0.0.30

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
  SHA256:
3
- metadata.gz: 403875b3b25f3013021e71d706b898b63182e701fcc18bd9e78a774a865a8e2f
4
- data.tar.gz: 11e22ff1905d049950f7f1c4f92a09c0e47d59d2f65d5dc9d125e9892dc46f5e
3
+ metadata.gz: f963ad419ec4bc9369167b55795a7567276b68562cbcd6c78cb0be12f3f23f7e
4
+ data.tar.gz: 5c533b595b8d277d57371a6277ca6c53e01781569344b8f3959b65b60cc233b5
5
5
  SHA512:
6
- metadata.gz: ed5d8a4ab6440ba0e2f7c51c896002174f90d2338da0a000b6e3c20718f89d344f5f6975e6c4d1903ab2e9ab71177579db7db61c1a7b06a2a887f6ebc6e73591
7
- data.tar.gz: fe098127aa49253c710b026bb152420250d01e3b72f35e3ec975d253f9bbe767833469a54103a6530a35d059b7613c540f61b5dc52ba84bce5e35d97ab037ad6
6
+ metadata.gz: c42cd31297f740d1c6ad10f90c3c1f2e17be118fd5e049b77a63acda3c8ef7b149e654983ad3a2a31425b011f0689aec2e389d0875b9d233764924506c47965d
7
+ data.tar.gz: 7d9d6459a9727727b24ae3515c5895ed34f6e348c5a7e9e9997daea04926d356f4c46e4c715bc00e263bb4976ae6e9c6a8b693f6534768ee44fd9e761a7c5877
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.28'
3
+ VERSION = '0.0.30'
4
4
  end
5
5
  end
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.28
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: 2022-11-21 00:00:00.000000000 Z
11
+ date: 2023-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake