dockercompose-generator 0.2.0 → 0.3.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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/Rakefile +0 -1
- data/lib/docker-compose/generator.rb +35 -0
- data/lib/docker-compose/generator/service.rb +16 -1
- data/lib/docker-compose/generator/version.rb +1 -1
- data/spec/docker-compose/generator/service_spec.rb +8 -0
- data/spec/docker-compose/generator_spec.rb +18 -0
- data/spec/fixtures/import1.yml +17 -0
- data/spec/helper.rb +11 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e2843149bb1dbcb62bcb1ce08dd562597fcbd8d
|
4
|
+
data.tar.gz: 383e5724e2c78c622e6ecda1c27b52f81763f665
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2963ac53dfaf2aad7a3e682333ca74392d9f972febf703adebf7257757460885d8cddfc63aec41c342336d2c9d8c6b3459b8f68d3060683dd67ad96268a92b72
|
7
|
+
data.tar.gz: 8fd950e79eb17170f3ff011d3e582a97533209285138fe5bc1713f02416d09fe349ceac51b77ba8fbbc3513651bb4ee291c38f60452bfcb41788c756f8867306
|
data/README.md
CHANGED
@@ -57,8 +57,8 @@ web:
|
|
57
57
|
|
58
58
|
## TODO
|
59
59
|
|
60
|
-
- Support more options than `links`, `ports`, and `environment` variables
|
61
|
-
- Add an Importer to seed the services
|
60
|
+
- ~~Support more options than `links`, `ports`, and `environment` variables~~
|
61
|
+
- ~~Add an Importer to seed the services~~
|
62
62
|
|
63
63
|
## Contributing
|
64
64
|
|
data/Rakefile
CHANGED
@@ -11,18 +11,37 @@ module DockerCompose
|
|
11
11
|
# @param [Hash]
|
12
12
|
@services = {}
|
13
13
|
|
14
|
+
# Create a new service
|
15
|
+
#
|
16
|
+
# @param [String] name
|
17
|
+
# The name of the service in docker
|
18
|
+
# @param [String] image
|
19
|
+
# The Image that the service will use in docker
|
20
|
+
# @return [Service]
|
14
21
|
def self.create_service(name, image)
|
15
22
|
@services[name] = Service.new(name, image)
|
16
23
|
end
|
17
24
|
|
25
|
+
# Does this service exist?
|
26
|
+
#
|
27
|
+
# @param [String] name
|
28
|
+
# The name of the service to check for
|
29
|
+
# @return [Boolean]
|
18
30
|
def self.service?(name)
|
19
31
|
(@services[name])
|
20
32
|
end
|
21
33
|
|
34
|
+
# Return a Service
|
35
|
+
#
|
36
|
+
# @param [String] name
|
37
|
+
# The name of the service to return
|
38
|
+
#
|
39
|
+
# @return [Service]
|
22
40
|
def self.get_service(name)
|
23
41
|
@services[name] if self.service?(name)
|
24
42
|
end
|
25
43
|
|
44
|
+
# Convert The Services to Yaml
|
26
45
|
def self.to_yaml
|
27
46
|
yaml = {}
|
28
47
|
|
@@ -32,5 +51,21 @@ module DockerCompose
|
|
32
51
|
|
33
52
|
yaml.to_yaml
|
34
53
|
end
|
54
|
+
|
55
|
+
# Reset the List of Services
|
56
|
+
def self.reset!
|
57
|
+
@services = {}
|
58
|
+
end
|
59
|
+
|
60
|
+
# Import
|
61
|
+
#
|
62
|
+
# @param [Hash] yaml_object
|
63
|
+
# The yaml object to convert to services
|
64
|
+
def self.import(yaml_object)
|
65
|
+
yaml_object.each do |key, value|
|
66
|
+
service = create_service(key, value['image'])
|
67
|
+
service.import(value)
|
68
|
+
end
|
69
|
+
end
|
35
70
|
end
|
36
71
|
end
|
@@ -29,6 +29,13 @@ module DockerCompose
|
|
29
29
|
|
30
30
|
attr_reader :name, :attrs
|
31
31
|
|
32
|
+
# Initialize Method
|
33
|
+
#
|
34
|
+
# @param [String] name
|
35
|
+
# The name of the service
|
36
|
+
#
|
37
|
+
# @param [String] image
|
38
|
+
# The image to use
|
32
39
|
def initialize(name, image)
|
33
40
|
@name = name
|
34
41
|
@attrs = {
|
@@ -43,7 +50,7 @@ module DockerCompose
|
|
43
50
|
[:build, :dockerfile, :command, :working_dir, :entrypoint, :user,
|
44
51
|
:hostname, :domainname, :mac_address, :mem_limit, :memswap_limit,
|
45
52
|
:privileged, :restart, :stdin_open, :tty, :cpu_shares, :cpuset,
|
46
|
-
:read_only, :volume_driver, :container_name].each do |method|
|
53
|
+
:read_only, :volume_driver, :container_name, :image].each do |method|
|
47
54
|
define_method "#{method}?" do
|
48
55
|
(@attrs["#{method}"])
|
49
56
|
end
|
@@ -72,6 +79,14 @@ module DockerCompose
|
|
72
79
|
end
|
73
80
|
end
|
74
81
|
|
82
|
+
# Import the attrs hash
|
83
|
+
#
|
84
|
+
# @param [Hash] attrs
|
85
|
+
# The attribute hash from the main import
|
86
|
+
def import(attrs)
|
87
|
+
@attrs = attrs
|
88
|
+
end
|
89
|
+
|
75
90
|
private
|
76
91
|
|
77
92
|
def add_to_array(array_name, value)
|
@@ -53,6 +53,14 @@ describe 'DockerCompose::Generator::Service' do
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
context '#image' do
|
57
|
+
it 'allows changing the image' do
|
58
|
+
expect(service.attrs['image']).to eq('test_image')
|
59
|
+
service.image = 'new_image'
|
60
|
+
expect(service.attrs['image']).to eq('new_image')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
56
64
|
|
57
65
|
context 'environment' do
|
58
66
|
it 'sets environment variable' do
|
@@ -42,6 +42,24 @@ describe 'DockerCompose::Generator' do
|
|
42
42
|
expect(DockerCompose::Generator.get_service('test_spec')).to eq(srv)
|
43
43
|
end
|
44
44
|
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context '#import' do
|
48
|
+
let(:file) { fixture('import1.yml') }
|
49
|
+
|
50
|
+
before(:each) do
|
51
|
+
DockerCompose::Generator.reset!
|
52
|
+
DockerCompose::Generator.import(YAML.load(file))
|
53
|
+
end
|
45
54
|
|
55
|
+
it 'will create three items' do
|
56
|
+
expect(DockerCompose::Generator.get_service('web')).to be_a(DockerCompose::Generator::Service)
|
57
|
+
expect(DockerCompose::Generator.get_service('elastic')).to be_a(DockerCompose::Generator::Service)
|
58
|
+
expect(DockerCompose::Generator.get_service('db')).to be_a(DockerCompose::Generator::Service)
|
46
59
|
end
|
60
|
+
|
61
|
+
it 'will return the same yaml after import' do
|
62
|
+
expect(DockerCompose::Generator.to_yaml).to eq(fixture_read('import1.yml'))
|
63
|
+
end
|
64
|
+
end
|
47
65
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
elastic:
|
3
|
+
image: elasticsearch:1.4
|
4
|
+
db:
|
5
|
+
image: mysql:5.6
|
6
|
+
environment:
|
7
|
+
MYSQL_ROOT_PASSWORD: test
|
8
|
+
MYSQL_DATABASE: test
|
9
|
+
MYSQL_USER: test
|
10
|
+
MYSQL_PASSWORD: test
|
11
|
+
web:
|
12
|
+
image: php:5.6-apache
|
13
|
+
links:
|
14
|
+
- db:mysql
|
15
|
+
- elastic
|
16
|
+
ports:
|
17
|
+
- 80:80
|
data/spec/helper.rb
CHANGED
@@ -20,3 +20,14 @@ RSpec.configure do |config|
|
|
20
20
|
config.raise_errors_for_deprecations!
|
21
21
|
end
|
22
22
|
|
23
|
+
def fixture_path
|
24
|
+
File.expand_path('../fixtures', __FILE__)
|
25
|
+
end
|
26
|
+
|
27
|
+
def fixture(file)
|
28
|
+
File.new(fixture_path + '/' + file)
|
29
|
+
end
|
30
|
+
|
31
|
+
def fixture_read(file)
|
32
|
+
File.read(fixture_path + '/' + file)
|
33
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dockercompose-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Whitcraft
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- lib/docker-compose/generator/version.rb
|
68
68
|
- spec/docker-compose/generator/service_spec.rb
|
69
69
|
- spec/docker-compose/generator_spec.rb
|
70
|
+
- spec/fixtures/import1.yml
|
70
71
|
- spec/helper.rb
|
71
72
|
homepage: https://github.com/jwhitcraft/dockercompose-generator
|
72
73
|
licenses:
|
@@ -88,12 +89,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
89
|
version: '0'
|
89
90
|
requirements: []
|
90
91
|
rubyforge_project:
|
91
|
-
rubygems_version: 2.
|
92
|
+
rubygems_version: 2.4.5
|
92
93
|
signing_key:
|
93
94
|
specification_version: 4
|
94
95
|
summary: Programmatically create a yaml file for docker-compose
|
95
96
|
test_files:
|
96
97
|
- spec/docker-compose/generator/service_spec.rb
|
97
98
|
- spec/docker-compose/generator_spec.rb
|
99
|
+
- spec/fixtures/import1.yml
|
98
100
|
- spec/helper.rb
|
99
|
-
has_rdoc:
|