dry-stack 0.0.37 → 0.0.39

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