dry-stack 0.0.29 → 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: 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