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 +4 -4
- data/bin/stack2.drs +1 -0
- data/lib/dry-stack/command_line.rb +5 -3
- data/lib/dry-stack/stack.rb +20 -0
- data/lib/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5f21e65df1e5cdb3f6fc7d28dd4c4f3e9c66db5de746af952d0353da1ecc4cb
|
4
|
+
data.tar.gz: 1cad2e0cf7cf1def43213d490173445db4df8036332b4ded90fd6095a552d8f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
56
|
-
|
57
|
-
|
57
|
+
rescue => e
|
58
|
+
puts e.message
|
59
|
+
exit 1
|
58
60
|
end
|
59
61
|
end
|
60
62
|
end
|
data/lib/dry-stack/stack.rb
CHANGED
@@ -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