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