dry-stack 0.0.11 → 0.0.13

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