dry-stack 0.0.37 → 0.0.39

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dry-stack/stack.rb +22 -14
  3. data/lib/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc52776646d4ad29e848531dddfdd4e7e5134ce143b67a67767a1b72e24fc6d9
4
- data.tar.gz: 4d44aa9270e87628c931e5c4e0ad3ffa8e38332e138875858d880dbd2c0aa49b
3
+ metadata.gz: 50bc59b593a8772c5e17d4c9d6b3f3d3e9417ad75ed38c3e29242ae5993fb5df
4
+ data.tar.gz: 9b300abb3d36ef7ec3288e881f203afe5c8538b3c5911fb7d4211f46f90da3a2
5
5
  SHA512:
6
- metadata.gz: b780119d23b4ceabc1a0694883635bc1284dbd07eb232b619bc30a640c315117676f861374cd57bfecaf95e8582505bb461979415152adad8a0e52aa37eb5160
7
- data.tar.gz: 9eb4cb230bf4643f0a4a05ea0414fa54cdec5709baca838e7679ac05e1166ba7e9cb06f144ea43882fde3ce92164a1b2515beba495795067cee203001bdd9e8f
6
+ metadata.gz: 45b33ebc74270d9b17fbf5f5a3b4cde1118ebd753fa7fb75d103ec8d57689265b089df309aa42048fda9bbd37eed34f598d1bcc267e7e6388bb04e7997f757bc
7
+ data.tar.gz: 836eb9f3f9f3b399910009c6ce30c2cde5d4663f6faf7cb827c2360821f7321ad6c90c3bcede99b9bf1ca0b4074fa620a37bcd435e148ca0bab7be08ebfab4bf
@@ -16,6 +16,7 @@ module Dry
16
16
  def image(name)= @service[:image] = name
17
17
  def ports(ports)= ((@service[:ports] ||= []) << ports).flatten!
18
18
  def command(cmd)= @service[:command] = cmd
19
+ def entrypoint(cmd)= @service[:entrypoint] = cmd
19
20
  def deploy_label(str)= @service[:deploy][:labels] << str
20
21
  end
21
22
 
@@ -91,33 +92,36 @@ module Dry
91
92
  end
92
93
 
93
94
  compose[:services].each do |name, service|
94
- @ingress[name][:port] ||= service[:ports]&.first if @ingress[name]
95
+ ingress = [@ingress[name]].flatten
96
+ ingress[0][:port] ||= service[:ports]&.first if ingress[0]
95
97
  service[:deploy] ||= {}
96
98
  service[:deploy][:labels] ||= []
97
99
  service[:deploy][:labels] += @labels.map { "#{_1}=#{_2}" }
98
100
 
99
- if @ingress[name] && (opts[:ingress] || opts[:traefik] || opts[:traefik_tls])
101
+ if ingress[0] && (opts[:ingress] || opts[:traefik] || opts[:traefik_tls])
100
102
  service[:networks] ||= []
101
103
  service[:networks] << 'default' if service[:networks].empty?
102
104
  service[:networks] << 'ingress_routing'
103
105
  end
104
106
 
105
- if opts[:host_sed] && @ingress.dig(name,:host)
106
- a, b = opts[:host_sed].split('/').reject(&:empty?)
107
- @ingress[name][:host].gsub! %r{#{a}}, b
107
+ ingress.each do |rule|
108
+ if opts[:host_sed] && rule[:host]
109
+ a, b = opts[:host_sed].split('/').reject(&:empty?)
110
+ rule[:host].gsub! %r{#{a}}, b
111
+ end
108
112
  end
109
113
 
110
- if @ingress[name] && opts[:ingress]
111
- service[:deploy][:labels] = @ingress[name]&.map { |k, v| "ingress.#{k}=#{v}" }
114
+ if ingress[0] && opts[:ingress]
115
+ service[:deploy][:labels] = ingress[0]&.map { |k, v| "ingress.#{k}=#{v}" }
112
116
  end
113
117
 
114
118
  service_name = "#{@name}_#{name}"
115
119
 
116
- if @ingress[name] && (opts[:traefik] || opts[:traefik_tls])
120
+ if ingress[0] && (opts[:traefik] || opts[:traefik_tls])
117
121
  service[:deploy][:labels] += [
118
122
  'traefik.enable=true',
119
123
  "traefik.http.routers.#{service_name}.service=#{service_name}",
120
- "traefik.http.services.#{service_name}.loadbalancer.server.port=#{@ingress[name][:port]}",
124
+ "traefik.http.services.#{service_name}.loadbalancer.server.port=#{ingress[0][:port]}"
121
125
  ]
122
126
 
123
127
  if opts[:traefik_tls]
@@ -131,11 +135,15 @@ module Dry
131
135
  ]
132
136
  end
133
137
 
134
- rule = []
135
- rule << "HostRegexp(`{name:#{nginx_host2regexp @ingress[name][:host]}}`)" if @ingress[name][:host]
136
- rule << "PathPrefix(`#{nginx_host2regexp @ingress[name][:path]}`)" if @ingress[name][:path]
137
- rule << "#{@ingress[name][:rule]}" if @ingress[name][:rule]
138
- service[:deploy][:labels] << "traefik.http.routers.#{service_name}.rule=#{rule.join ' && '}"
138
+ rule_group = ingress.map do|r|
139
+ rule = []
140
+ rule << "HostRegexp(`{name:#{nginx_host2regexp r[:host]}}`)" if r[:host]
141
+ rule << "PathPrefix(`#{nginx_host2regexp r[:path]}`)" if r[:path]
142
+ rule << "#{r[:rule]}" if r[:rule]
143
+ rule.join ' && '
144
+ end
145
+ rule = rule_group.size > 1 ? rule_group.map{"(#{_1})"}.join(' || ') : rule_group[0]
146
+ service[:deploy][:labels] << "traefik.http.routers.#{service_name}.rule=#{rule}"
139
147
  end
140
148
 
141
149
  hash = {'service-name': service_name}
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.37'
3
+ VERSION = '0.0.39'
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.37
4
+ version: 0.0.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-25 00:00:00.000000000 Z
11
+ date: 2023-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake