docker_compose_env 0.1.2 → 1.0.0

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.
@@ -1,40 +1,50 @@
1
1
  require 'docker_compose_env/version'
2
+ require 'open3'
2
3
  require 'yaml'
3
4
 
4
5
  # The main module for DockerComposeEnv, this provides a single "easy mode"
5
6
  # method for setting up the environment.
6
7
  module DockerComposeEnv
7
- def self.setup!(env: ENV, file: 'docker-compose.yml')
8
+ def self.setup!(env: ENV, file: 'docker-compose.yml', process_env: {})
8
9
  config = YAML.safe_load(File.read(file))
9
10
 
10
11
  config.fetch('services', {}).keys.each do |service_name|
11
12
  (config['services'][service_name]['ports'] || []).each do |container_port|
13
+ compose_port_info = nil
14
+
12
15
  if /(\d+)\/udp$/ =~ container_port
13
16
  parsed_port = /(?<port>\d+)\/udp$/.match(container_port).named_captures['port']
14
17
 
15
18
  command = "docker-compose --file=#{file} port --protocol=udp #{service_name} #{parsed_port}"
16
- compose_port_info = `#{command}`
19
+ Open3.popen3(process_env, command) do |stdin, stdout, stderr, wait_thr|
20
+ compose_port_info = stdout.read
21
+ wait_thr.value
22
+ end
17
23
 
18
- if (compose_port_info =~ /^0\.0\.0\.0\:\d+\s*$/) == 0
24
+ if (compose_port_info =~ /^(0\.0\.0\.0\:)?\d+\s*$/) == 0
19
25
  if env["#{service_name.upcase}_HOST"].nil?
20
26
  env["#{service_name.upcase}_HOST"] = '0.0.0.0'
21
27
  end
22
28
 
23
29
  if env["#{service_name.upcase}_PORT_#{parsed_port}_UDP"].nil?
24
- env["#{service_name.upcase}_PORT_#{parsed_port}_UDP"] = compose_port_info.gsub(/0\.0\.0\.0:(\d+)\s*/, '\1')
30
+ env["#{service_name.upcase}_PORT_#{parsed_port}_UDP"] = compose_port_info.gsub('0.0.0.0:', '').gsub(/(\d+)\s*/, '\1')
25
31
  end
26
32
  end
27
33
  else
28
34
  command = "docker-compose --file=#{file} port #{service_name} #{container_port}"
29
- compose_port_info = `#{command}`
35
+ Open3.popen3(process_env, command) do |stdin, stdout, stderr, wait_thr|
36
+ compose_port_info = stdout.read
37
+ wait_thr.value
38
+ end
30
39
 
31
- if (compose_port_info =~ /^0\.0\.0\.0\:\d+\s*$/) == 0
40
+ # podman-compose appears to return as "44577\n" w/out 0.0.0.0:44577
41
+ if (compose_port_info =~ /^(0\.0\.0\.0\:)?\d+\s*$/) == 0
32
42
  if env["#{service_name.upcase}_HOST"].nil?
33
43
  env["#{service_name.upcase}_HOST"] = '0.0.0.0'
34
44
  end
35
45
 
36
46
  if env["#{service_name.upcase}_PORT_#{container_port}"].nil?
37
- env["#{service_name.upcase}_PORT_#{container_port}"] = compose_port_info.gsub(/0\.0\.0\.0:(\d+)\s*/, '\1')
47
+ env["#{service_name.upcase}_PORT_#{container_port}"] = compose_port_info.gsub('0.0.0.0', '').gsub(/(\d+)\s*/, '\1')
38
48
  end
39
49
  end
40
50
  end
metadata CHANGED
@@ -1,43 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker_compose_env
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Knapp
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
10
+ date: 1980-01-01 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '2.0'
18
+ version: '0'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '2.0'
25
+ version: '0'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: rake
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '12.0'
32
+ version: '0'
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '12.0'
39
+ version: '0'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: reek
43
42
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +69,16 @@ dependencies:
70
69
  name: minitest
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
- - - "~>"
72
+ - - ">="
74
73
  - !ruby/object:Gem::Version
75
- version: '5.10'
74
+ version: '0'
76
75
  type: :development
77
76
  prerelease: false
78
77
  version_requirements: !ruby/object:Gem::Requirement
79
78
  requirements:
80
- - - "~>"
79
+ - - ">="
81
80
  - !ruby/object:Gem::Version
82
- version: '5.10'
81
+ version: '0'
83
82
  description: Simplify configuration between Docker Compose and Ruby/Rails apps in
84
83
  development.
85
84
  email:
@@ -88,12 +87,14 @@ executables: []
88
87
  extensions: []
89
88
  extra_rdoc_files: []
90
89
  files:
90
+ - ".envrc"
91
91
  - ".gitignore"
92
92
  - ".rubocop.yml"
93
93
  - ".tool-versions"
94
94
  - ".travis.yml"
95
95
  - CHANGELOG.md
96
96
  - Gemfile
97
+ - Gemfile.lock
97
98
  - LICENSE
98
99
  - README.md
99
100
  - Rakefile
@@ -103,6 +104,9 @@ files:
103
104
  - docker_compose_env.gemspec
104
105
  - docker_compose_env_rails.gemspec
105
106
  - docs/why.md
107
+ - flake.lock
108
+ - flake.nix
109
+ - gemset.nix
106
110
  - lib/docker_compose_env.rb
107
111
  - lib/docker_compose_env/now.rb
108
112
  - lib/docker_compose_env/railtie.rb
@@ -112,7 +116,6 @@ homepage: https://github.com/CoffeeAndCode/docker_compose_env
112
116
  licenses:
113
117
  - MIT
114
118
  metadata: {}
115
- post_install_message:
116
119
  rdoc_options: []
117
120
  require_paths:
118
121
  - lib
@@ -127,8 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
130
  - !ruby/object:Gem::Version
128
131
  version: '0'
129
132
  requirements: []
130
- rubygems_version: 3.0.6
131
- signing_key:
133
+ rubygems_version: 3.6.9
132
134
  specification_version: 4
133
135
  summary: Simplify configuration between Docker Compose and Ruby/Rails apps in development.
134
136
  test_files: []