dry-stack 0.0.29 → 0.0.31

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