dry-stack 0.0.29 → 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: ec6a26f6bec5b6052d6d1d3ba5d8da6364bd57be09e36c50df7619b30ffb3580
4
- data.tar.gz: 5414baf2c1dbff34e6db0dfd68fb314569dc41e7a05c9ee0a356c4e06ad2f814
3
+ metadata.gz: f963ad419ec4bc9369167b55795a7567276b68562cbcd6c78cb0be12f3f23f7e
4
+ data.tar.gz: 5c533b595b8d277d57371a6277ca6c53e01781569344b8f3959b65b60cc233b5
5
5
  SHA512:
6
- metadata.gz: 2c981de0665c1744c01a79c1c9b30e6df2278de89d22be0f796b3e00c48862d50dad34259bbb7e11faf8547ae567d78a89017bb5cbc803adcbdc68c9830a243f
7
- data.tar.gz: 1b20dfae0ec340458c2bc53c5b3f4f694271cc2faf23d95c25bf91296d9af39a3374cb7a86d0242687f9d7984aec08ff87927819d5acee758de3cc835c2d552b
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,13 +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 = {}
42
44
  @labels = {}
43
45
  end
44
46
 
45
- def stringify(hash) = hash.to_h { |k, v| [k.to_s, v.is_a?(Hash) ? stringify(v) : v] }
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
53
+ end
54
+
46
55
  def expand_hash(hash)
47
56
  hash.select { _1.to_s =~ /\./ }.each do |k, v|
48
57
  name = k.to_s.scan(/([^\.]*)\.(.*)/).flatten
@@ -72,6 +81,7 @@ module Dry
72
81
  # Not allowed by docker stack deploy
73
82
  version: @version,
74
83
  services: YAML.load(@services.to_yaml),
84
+ volumes: YAML.load(@volumes.to_yaml),
75
85
  networks: YAML.load(@networks.to_yaml),
76
86
  }
77
87
 
@@ -179,6 +189,12 @@ module Dry
179
189
  @networks[name].merge! opts
180
190
  yield if block_given?
181
191
  end
192
+
193
+ def Volume(name, opts = {})
194
+ @volumes[name] ||= {}
195
+ @volumes[name].merge! opts
196
+ yield if block_given?
197
+ end
182
198
  end
183
199
  end
184
200
 
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.29'
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.29
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-23 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