dry-stack 0.0.29 → 0.0.31

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: 2d15a946b86497d529dc191697a55abb8ff207dd70da6807640b7a87ef4f2269
4
+ data.tar.gz: b17a4ac10cdc98485cb31aec4ddf4d68e46bc5486dbf163312c6536ef437bde2
5
5
  SHA512:
6
- metadata.gz: 2c981de0665c1744c01a79c1c9b30e6df2278de89d22be0f796b3e00c48862d50dad34259bbb7e11faf8547ae567d78a89017bb5cbc803adcbdc68c9830a243f
7
- data.tar.gz: 1b20dfae0ec340458c2bc53c5b3f4f694271cc2faf23d95c25bf91296d9af39a3374cb7a86d0242687f9d7984aec08ff87927819d5acee758de3cc835c2d552b
6
+ metadata.gz: 90e203c189bedd2dea18e0fe4407d7992d5173a5a74eaf055af9b1350ad700a9da4313e6e9d6bb548a924c2d9a122e198b7351f4ea9a4dfc685ce0c2b1d8135d
7
+ data.tar.gz: 949c056d38082987d914d81da31a6ec832b1b06fe16a5e8504f64d113f8234370b353061aa371961d664e6c109e62312f95240f496e01ab4913527890d71aa1c
@@ -1,4 +1,15 @@
1
1
  require_relative '../version'
2
+ require 'open3'
3
+
4
+ def exec_i(cmd, input_string)
5
+ puts "exec_i(inputs.size #{input_string.size}): #{cmd}"
6
+ Open3.popen3(cmd) do |i, o, e, t|
7
+ i.puts input_string
8
+ i.close
9
+ while line = o.gets; puts "o: " + line end
10
+ while line = e.gets; puts "o: " + line end
11
+ end
12
+ end
2
13
 
3
14
  module Dry
4
15
  module CommandLine
@@ -9,10 +9,12 @@ Dry::CommandLine::COMMANDS[:swarm_deploy] = Class.new do
9
9
  # substitute ENV variables
10
10
  yaml = _params[:'no-env'] ? yaml : `echo \"#{yaml.gsub("`", '\\\`')}\"`
11
11
  system " echo \"#{yaml.gsub("`", '\\\`')}\"" if _params[:v]
12
- system " echo \"#{yaml.gsub("`", '\\\`')}\" | docker stack deploy -c - #{stack.name} --prune --resolve-image changed"
13
- system " docker config rm #{stack.name}_readme"
14
- puts " printf \"#{stack.description}\" | docker config create #{stack.name}_readme -"
15
- system " printf \"#{stack.description}\" | docker config create #{stack.name}_readme -"
12
+ # system " echo \"#{yaml.gsub("`", '\\\`')}\" | docker stack deploy -c - #{stack.name} --prune --resolve-image changed"
13
+
14
+ exec_i "docker stack deploy -c - #{stack.name} --prune --resolve-image changed", yaml
15
+ system "docker config rm #{stack.name}_readme"
16
+ puts "stack description: #{stack.description}"
17
+ exec_i "docker config create #{stack.name}_readme -", stack.description
16
18
  end
17
19
 
18
20
  def help = 'Call docker stack deploy & add config readme w/ description'
@@ -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.31'
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.31
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-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake