dry-stack 0.0.4 → 0.0.5

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: 4b5476c2fbc526efb9f2626a6324ef08de62db257f415dad79117cd6ba9e2112
4
- data.tar.gz: cbcd327643b6447815f1ca6c0119b0b4bedc2c07f382d7541be5f40372fed291
3
+ metadata.gz: b6b0981566e92e24a2da8878f387d0db385cf91c330bdbdf85cafd99f2c57561
4
+ data.tar.gz: f1a39d9413754ebe20c0249f9e7ea2c344c136387c0211ab9aa98c7fc37b4a24
5
5
  SHA512:
6
- metadata.gz: 8b0cb4055dfc95cbd774ddacf53a4d7d3a3d8225e92c1aa97d7b317279db51f085ce700872c6bc34ab4b857c1102b4f3090460213ccbeb6fe85768d27b687fa0
7
- data.tar.gz: cb635df42bf89ad2e08b33d2704348ac0091c087b36ec458d3f5aa0ceb5eda462339ee8b68fc7a17fde4464b1360b5f7ef94f1076d0531d041ff27e8557fd1e0
6
+ metadata.gz: b81863c9ebe1e517bdb3e3060e80673ea0ea870c307519c44ef0464bdd04f9aef5a0a18945973bc6d4fd97cb4dfe79822fa3d0511500366bcf05f7e360dbcad1
7
+ data.tar.gz: 3de0c4bd30868e4c82763d642e4b3904915ce3351dea066ae95b2933ee624aeded11bc4792afac46e8e6369797625c83ad15cf7be5d2bbcb9d1b8f20fb38b5ae
data/bin/stack2.drs ADDED
@@ -0,0 +1,8 @@
1
+ PublishPorts reports: 7000
2
+ Ingress reports: {host: 'reports.*', protocol: :http, port: 7000}
3
+
4
+ Service :admin, image: '$REGISTRY_HOST/frontend', env: { APP: 'admin' }, ports: 5000
5
+ Service :reports, image: '$REGISTRY_HOST/reports', env: { DB_URL: '$DB_URL' }
6
+
7
+ Network :default, attachable: true
8
+ Network :ingress_routing, external: true, name: 'ingress-routing'
@@ -31,6 +31,7 @@ module Dry
31
31
  @services = {}
32
32
  @networks = {}
33
33
  @publish_ports = {}
34
+ @ingress = {}
34
35
  end
35
36
 
36
37
  def stringify(hash) = hash.to_h { |k, v| [k.to_s, v.is_a?(Hash) ? stringify(v) : v] }
@@ -42,11 +43,18 @@ module Dry
42
43
  }
43
44
 
44
45
  compose[:services].each do |name, service|
45
- service[:ports] = @publish_ports[name]&.zip(service[:ports])&.map { _1.join ':' }
46
- service.delete_if { _2.nil? || _2.empty? }
46
+ @ingress[name][:port] ||= service[:ports]&.first if @ingress[name]
47
+ service[:deploy] ||= {}
48
+ service[:deploy][:labels] = @ingress[name]&.map { |k, v| "ingress.#{k}=#{v}" }
49
+
50
+ service[:ports] = @publish_ports[name]&.zip(service[:ports] || @publish_ports[name])&.map { _1.join ':' }
47
51
  end
48
52
 
49
- compose.delete_if { _2.nil? || _2.empty? }
53
+ prune = ->(o) {
54
+ o.each { prune[_2] } if o.is_a? Hash
55
+ o.delete_if { _2.nil? || (_2.respond_to?(:empty?) && _2.empty?) } if o.is_a? Hash
56
+ }
57
+ prune[compose]
50
58
  stringify(compose).to_yaml
51
59
  end
52
60
 
@@ -67,6 +75,10 @@ module Dry
67
75
  ServiceFunction.new(@services[name], &) if block_given?
68
76
  end
69
77
 
78
+ def Ingress(services)
79
+ @ingress.merge! services
80
+ end
81
+
70
82
  def Network(name, opts = {})
71
83
  @networks[name] ||= {}
72
84
  @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.4'
3
+ VERSION = '0.0.5'
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.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-31 00:00:00.000000000 Z
11
+ date: 2022-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -104,6 +104,7 @@ files:
104
104
  - bin/dry-stack
105
105
  - bin/stack.drs
106
106
  - bin/stack1.drs
107
+ - bin/stack2.drs
107
108
  - lib/dry-stack.rb
108
109
  - lib/dry-stack/command_compose.rb
109
110
  - lib/dry-stack/command_line.rb