dry-stack 0.0.11 → 0.0.13

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: 650b0226416d2a1f6c7ce540d792d6721c37c248bff0794ea9d469a289d01866
4
- data.tar.gz: b1c3554c45fdb137b176deae57ec2cf29926c5403b68a701ccf46b931c4f8f31
3
+ metadata.gz: d5f21e65df1e5cdb3f6fc7d28dd4c4f3e9c66db5de746af952d0353da1ecc4cb
4
+ data.tar.gz: 1cad2e0cf7cf1def43213d490173445db4df8036332b4ded90fd6095a552d8f3
5
5
  SHA512:
6
- metadata.gz: 744e043617e076fde81f5c424fb290456318d0b22d70977ed02896bceedc67d569745c26e0f1241b8d726c7e6444e357239c1c9ac967c148bc462ab9585530cc
7
- data.tar.gz: 6bb3474c6b3cc7bd5ea5c0f9c4581ddd59cf0d1da801c8eae5ba19e0ba667ee3f2c4b5224c6e896330b77e7b62226946292f7c6bb1122e9dcedfcc1af0e0824a
6
+ metadata.gz: 68640915ff636f73f85a5d3cf4be792aeaa541b3887c8b8da996d640193c49c839997639fe22f1bfc2d7b25c99cd41a479983ebed555a834480ad36fab4eb63c
7
+ data.tar.gz: cb262611e2c731eb9af706f267e2b40d7253ee070a774353ae89b956a330d4451525acb7196dc8e70f89443bfdb214bf76d1d485ae7f780a30f9f32f21995033
data/bin/stack2.drs CHANGED
@@ -1,5 +1,6 @@
1
1
  PublishPorts reports: 7000
2
2
  Ingress reports: {host: 'reports.*', protocol: :http, port: 7000}
3
+ Deploy admin: { replica: 2, 'resources.limits': { cpus: 4, memory: '500M' } }
3
4
 
4
5
  Service :admin, image: '$REGISTRY_HOST/frontend', env: { APP: 'admin' }, ports: 5000
5
6
  Service :reports, image: '$REGISTRY_HOST/reports', env: { DB_URL: '$DB_URL' }
@@ -38,6 +38,7 @@ module Dry
38
38
  # in all caps are required
39
39
  o.on('-s', '--stack STACK_NAME', 'Stack file')
40
40
  o.on('-e', '--env', 'Load .env file') { load_env }
41
+ o.on('', '--name STACK_NAME', 'Define stack name')
41
42
  o.on('', '--ingress', 'Generate ingress labels') { true }
42
43
  o.on('', '--traefik', 'Generate traefik labels') { true }
43
44
  o.on('-n', '--no-env', 'Do not process env variables') { true }
@@ -51,10 +52,11 @@ module Dry
51
52
 
52
53
  stack_text = $stdin.tty? ? File.read(params[:stack]) : STDIN.read
53
54
  Dry::Stack() { eval stack_text }
55
+ Stack.last_stack.name = params[:name] if params[:name]
54
56
  COMMANDS[command.to_sym].run Stack.last_stack, params
55
- # rescue => e
56
- # puts e.message
57
- # exit 1
57
+ rescue => e
58
+ puts e.message
59
+ exit 1
58
60
  end
59
61
  end
60
62
  end
@@ -20,6 +20,7 @@ module Dry
20
20
  class << self
21
21
  attr_accessor :last_stack
22
22
  end
23
+ attr_accessor :name
23
24
 
24
25
  def Stack(name = nil, &)
25
26
  Stack.last_stack = Stack.new name
@@ -32,9 +33,22 @@ module Dry
32
33
  @networks = {}
33
34
  @publish_ports = {}
34
35
  @ingress = {}
36
+ @deploy = {}
35
37
  end
36
38
 
37
39
  def stringify(hash) = hash.to_h { |k, v| [k.to_s, v.is_a?(Hash) ? stringify(v) : v] }
40
+ def expand_hash(hash)
41
+ hash.select { _1.to_s =~ /\./ }.each do |k, v|
42
+ name = k.to_s.scan(/([^\.]*)\.(.*)/).flatten
43
+ hash.delete k
44
+ hash[name[0]] ||= {}
45
+ hash[name[0]][name[1]] ||= {}
46
+ hash[name[0]][name[1]].merge! v if v.is_a?(Hash)
47
+ hash[name[0]][name[1]] = v unless v.is_a?(Hash)
48
+ end
49
+ hash.each { expand_hash(_2) if _2.is_a?(Hash) }
50
+ hash
51
+ end
38
52
 
39
53
  def nginx_host2regexp(str)
40
54
  str.to_s.gsub('.', '\.').gsub('*', '.*')
@@ -77,6 +91,8 @@ module Dry
77
91
  ]
78
92
  end
79
93
 
94
+ service[:deploy].merge! @deploy[name] if @deploy[name]
95
+
80
96
  service[:ports] = @publish_ports[name]&.zip(service[:ports] || @publish_ports[name])&.map { _1.join ':' }
81
97
  end
82
98
 
@@ -109,6 +125,10 @@ module Dry
109
125
  @ingress.merge! services
110
126
  end
111
127
 
128
+ def Deploy(services)
129
+ @deploy.merge! expand_hash(services)
130
+ end
131
+
112
132
  def Network(name, opts = {})
113
133
  @networks[name] ||= {}
114
134
  @networks[name].merge! opts
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.11'
3
+ VERSION = '0.0.13'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B