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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ce43c3684c9259b4c1272324a0867c8e374164a5
4
- data.tar.gz: 88c6897c33bb37782a46fb94264bb6f415ffbbfb
3
+ metadata.gz: 0e2843149bb1dbcb62bcb1ce08dd562597fcbd8d
4
+ data.tar.gz: 383e5724e2c78c622e6ecda1c27b52f81763f665
5
5
  SHA512:
6
- metadata.gz: 0e760b9e7d2db5f11ef36f56633f07e8bc03654637b5d97576b57a637e451fb5dbd6a76a326df366779da077be30723be5eea9cda16597b81bc27771778c1545
7
- data.tar.gz: 281853a06adff75a9df3869c844e06e298c19f16873f1eb33a68beaee563669ddb108772da000415092c1d5446159a8a988b09b34e4302df0befed72ae0d50b3
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
@@ -1,5 +1,4 @@
1
1
  require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
3
2
 
4
3
  require 'rspec/core/rake_task'
5
4
  RSpec::Core::RakeTask.new(:spec)
@@ -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)
@@ -7,7 +7,7 @@ module DockerCompose
7
7
 
8
8
  # Current minor release.
9
9
  # @return [Integer]
10
- MINOR = 2
10
+ MINOR = 3
11
11
 
12
12
  # Current patch level.
13
13
  # @return [Integer]
@@ -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
@@ -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.2.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-28 00:00:00.000000000 Z
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.2.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: