dry-stack 0.0.4 → 0.0.6

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: aceddb469a65daa05b5a996bc35bddc70337406c3b1c365288fd7fd5c355a3b8
4
+ data.tar.gz: 513f1e22fabba232a95d5084e936d9a488514f1c14181568b6b29a223132519c
5
5
  SHA512:
6
- metadata.gz: 8b0cb4055dfc95cbd774ddacf53a4d7d3a3d8225e92c1aa97d7b317279db51f085ce700872c6bc34ab4b857c1102b4f3090460213ccbeb6fe85768d27b687fa0
7
- data.tar.gz: cb635df42bf89ad2e08b33d2704348ac0091c087b36ec458d3f5aa0ceb5eda462339ee8b68fc7a17fde4464b1360b5f7ef94f1076d0531d041ff27e8557fd1e0
6
+ metadata.gz: 540953d9faed9eb9e31b8fddd6a227caeee5fe5381b2ecf7832817aeb9505313f4cbb0d77bb67627131cef6b15c2912e8af0e803a5fc65998b57d917f34037b0
7
+ data.tar.gz: 6f0cb5b9c706ef4f41a4af49d6bac8ca58e97c27ee163e33bf170c9dbbe34b59afb82bb11f7ca0da3f9aeb41ef7d38de91da15badfd46891be7affb042b9ba7c
data/bin/stack2.drs ADDED
@@ -0,0 +1,7 @@
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
@@ -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] }
@@ -40,13 +41,27 @@ module Dry
40
41
  services: YAML.load(@services.to_yaml),
41
42
  networks: YAML.load(@networks.to_yaml),
42
43
  }
44
+ if @ingress.any?
45
+ compose[:networks].merge! ingress_routing: {external: true, name: 'ingress-routing'}
46
+ end
43
47
 
44
48
  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? }
49
+ @ingress[name][:port] ||= service[:ports]&.first if @ingress[name]
50
+ service[:deploy] ||= {}
51
+ service[:deploy][:labels] = @ingress[name]&.map { |k, v| "ingress.#{k}=#{v}" }
52
+ if @ingress[name]
53
+ service[:networks] ||= []
54
+ service[:networks] << 'ingress_routing'
55
+ end
56
+
57
+ service[:ports] = @publish_ports[name]&.zip(service[:ports] || @publish_ports[name])&.map { _1.join ':' }
47
58
  end
48
59
 
49
- compose.delete_if { _2.nil? || _2.empty? }
60
+ prune = ->(o) {
61
+ o.each { prune[_2] } if o.is_a? Hash
62
+ o.delete_if { _2.nil? || (_2.respond_to?(:empty?) && _2.empty?) } if o.is_a? Hash
63
+ }
64
+ prune[compose]
50
65
  stringify(compose).to_yaml
51
66
  end
52
67
 
@@ -67,6 +82,10 @@ module Dry
67
82
  ServiceFunction.new(@services[name], &) if block_given?
68
83
  end
69
84
 
85
+ def Ingress(services)
86
+ @ingress.merge! services
87
+ end
88
+
70
89
  def Network(name, opts = {})
71
90
  @networks[name] ||= {}
72
91
  @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.6'
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.6
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