dry-stack 0.0.77 → 0.0.79

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: 2a44dfe7eace61d17fa137d2b2a78b9c2a5108dc6f9546d15720b12da71d0edf
4
- data.tar.gz: 597f836d5ee46984566fc5e34c6ac5562203d5360d8d7554868ba11eaec0cace
3
+ metadata.gz: 8823f4774a66a511374052a8358d1f55b5fdd9828fe5de1805078ca2d6ed6e6f
4
+ data.tar.gz: 92c42ce074daa1565f3b927eeee50c90721741be2ec1748c220016d53c5e21a7
5
5
  SHA512:
6
- metadata.gz: b5393cfb1d0a60401a43d4361a79b95e8fb45f968b05563dc295175af05c3331e5c4ea49d44c35f70a048b61c39da97d3c09429d06e4fc3666345755e85365df
7
- data.tar.gz: 22a3f8ed7f8f6d1a8feb1d62b0a3e0e2400bfbb7f33a46f35230d4c6d4def543f2b0b514e618d753e2bd551060b127e8fc622903b260650c6eae606d9701c231
6
+ metadata.gz: fe64f228952239381ea0babe811d65f2f0a868e4f21a8452e3568314f0b89f2baf2da28c220620f4d7c46a8af586e3e417c1f35856f891f52164a6008e54ca3b
7
+ data.tar.gz: 4ab470216298a7d48417a5db86b1c5d955ab1eaf393aa4f3ec4b746c41995bfb098ffca4a19c896218d5f27fbb269c8b2954b225f9f30071212570fb0957527a
@@ -2,10 +2,10 @@ require_relative 'command_line'
2
2
 
3
3
  Dry::CommandLine::COMMANDS[:to_compose] = Class.new do
4
4
  def run(stack, params, args, extra)
5
- raise "unsupported args: #{args}" unless args.empty?
5
+ raise "none or one deploy name may be specified: #{args}" unless args.empty? || args.size == 1
6
6
  _params = stack.options.merge params
7
7
  stack.name = _params[:name] if _params[:name]
8
- yaml = stack.to_compose(_params).lines[1..].join
8
+ yaml = stack.to_compose(_params, args[0]&.to_sym ).lines[1..].join
9
9
 
10
10
  # substitute ENV variables
11
11
  _params[:'no-env'] ? $stdout.puts(yaml) : system("echo \"#{yaml.gsub("`", '\\\`')}\"")
@@ -61,6 +61,7 @@ module Dry
61
61
  class SwarmFunction
62
62
  def initialize(swarm, &); @swarm = swarm; instance_exec(&) end
63
63
  def env(variables)= @swarm[:environment].merge! variables
64
+ def options(variables)= @swarm[:options].merge! variables
64
65
  def context_host(host)= @swarm[:context_host] = host
65
66
  def context_name(name)= @swarm[:context_name] = name
66
67
  def stack_name(name)= @swarm[:stack_name] = name
@@ -119,7 +120,12 @@ module Dry
119
120
  end
120
121
  end
121
122
 
122
- def to_compose(opts = @options )
123
+ def to_compose(opts = @options, deploy_name = nil )
124
+ if deploy_name
125
+ raise "Deploy not found: #{deploy_name}" unless @swarm_deploy[deploy_name]
126
+
127
+ opts.merge! @swarm_deploy[deploy_name][:options]
128
+ end
123
129
  compose = {
124
130
  # name: @name.to_s, # https://docs.docker.com/compose/compose-file/#name-top-level-element
125
131
  # Not allowed by docker stack deploy
@@ -248,7 +254,7 @@ module Dry
248
254
  compose[:configs].update(compose[:configs]) do |name, config|
249
255
  if config[:file_content]
250
256
  md5 = Digest::MD5.hexdigest config[:file_content]
251
- fname = "./#{@name}.config.#{name}"
257
+ fname = "./#{@name}.config.#{name}.#{md5}" # use MD5, when rn in parallel may have different content
252
258
  File.write fname, config[:file_content]
253
259
  {name: "#{name}-#{md5}", file: fname}.merge config.except(:file_content)
254
260
  elsif config[:file]
@@ -358,7 +364,7 @@ module Dry
358
364
  def SwarmDeploy(name, opts = {}, &)
359
365
  opts[:environment] = opts.delete(:env) if opts.key? :env
360
366
 
361
- swarm = @swarm_deploy[name.to_sym] ||= { environment: {} }
367
+ swarm = @swarm_deploy[name.to_sym] ||= { environment: {}, options: {} }
362
368
  swarm.merge! opts
363
369
  SwarmFunction.new(swarm, &) if block_given?
364
370
  end
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.77'
3
+ VERSION = '0.0.79'
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.77
4
+ version: 0.0.79
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-09 00:00:00.000000000 Z
11
+ date: 2024-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake