dockit 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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/Dockerfile +17 -0
- data/Gemfile +4 -0
- data/README.md +124 -0
- data/Rakefile +28 -0
- data/VERSION +1 -0
- data/bin/console +10 -0
- data/bin/dockit +8 -0
- data/bin/setup +7 -0
- data/dockit.gemspec +32 -0
- data/lib/dockit.rb +84 -0
- data/lib/dockit/cli.rb +249 -0
- data/lib/dockit/config.rb +63 -0
- data/lib/dockit/container.rb +81 -0
- data/lib/dockit/digitalocean.rb +148 -0
- data/lib/dockit/image.rb +47 -0
- data/lib/dockit/service.rb +90 -0
- data/spec/deploy/Dockit.rb +7 -0
- data/spec/deploy/mod/Dockit.rb +6 -0
- data/spec/deploy/mod/Dockit.yaml +0 -0
- data/spec/deploy/svc/Dockit.yaml +2 -0
- data/spec/dockit/bad.yaml +2 -0
- data/spec/dockit/config_spec.rb +52 -0
- data/spec/dockit/locals.yaml +3 -0
- data/spec/dockit/simple.yaml +2 -0
- data/spec/dockit_spec.rb +80 -0
- data/spec/spec_helper.rb +8 -0
- metadata +209 -0
File without changes
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'dockit/config' # for spectator
|
3
|
+
|
4
|
+
describe Dockit::Config do
|
5
|
+
def file(name)
|
6
|
+
File.join(File.dirname(__FILE__), "#{name}.yaml")
|
7
|
+
end
|
8
|
+
context 'Bad file' do
|
9
|
+
subject do
|
10
|
+
Dockit::Config.new(file)
|
11
|
+
end
|
12
|
+
it 'requires a config file' do
|
13
|
+
expect {Dockit::Config.new}.to raise_error(ArgumentError)
|
14
|
+
end
|
15
|
+
it 'should be a valid yaml file' do
|
16
|
+
expect { Dockit::Config.new(file('bad')) }.to raise_error(Psych::SyntaxError)
|
17
|
+
end
|
18
|
+
it 'the config file should exist' do
|
19
|
+
expect {Dockit::Config.new('foo.yaml')}.to raise_error(Errno::ENOENT)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
context 'simple file' do
|
23
|
+
subject do
|
24
|
+
Dockit::Config.new(file('simple'))
|
25
|
+
end
|
26
|
+
|
27
|
+
it { is_expected.to be_a Dockit::Config }
|
28
|
+
|
29
|
+
it 'gets a config section' do
|
30
|
+
expect(subject.get('build')).to eq({'t' => 'simple'})
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'is key type indifferent' do
|
34
|
+
expect(subject.get(:build)).to eq({'t' => 'simple'})
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'gets a config value' do
|
38
|
+
expect(subject.get(:build, :t)).to eq('simple')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'file with locals' do
|
43
|
+
let(:path) {file('locals') }
|
44
|
+
it 'should exit with a message if a local is missing' do
|
45
|
+
expect { Dockit::Config.new(path) }.to raise_error(SystemExit, /forget/)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should expand the locals' do
|
49
|
+
expect(Dockit::Config.new(path, {name: 'test'}).get(:build, :t)).to eq('test')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/spec/dockit_spec.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
shared_examples 'a dockit config' do |meth, keys, dirs, ext|
|
3
|
+
def dockit_files(names, ext)
|
4
|
+
pwd = File.dirname(__FILE__)
|
5
|
+
names.collect do |n|
|
6
|
+
File.expand_path("deploy/#{n}/Dockit.#{ext}", pwd)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:val) { subject.send(meth) }
|
11
|
+
let(:files) { dockit_files(dirs, ext) }
|
12
|
+
|
13
|
+
it "returns a hash" do
|
14
|
+
expect(val).to_not be_empty
|
15
|
+
expect(val).to be_a Hash
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'is keyed by directory name' do
|
19
|
+
expect(val.keys).to match_array(keys)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "has a Dockit.#{ext} file for each key" do
|
23
|
+
expect(val.values).to match_array(files)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe Dockit do
|
28
|
+
it 'has a version number' do
|
29
|
+
expect(Dockit::VERSION).to_not be_nil
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'has an Env class' do
|
33
|
+
expect(Dockit::Env).to be_a(Class)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'uses the current directory as the project root' do
|
37
|
+
expect(Dockit::Env.new.root).to eq(Dir.pwd)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'has a Log class' do
|
41
|
+
expect(Dockit::Log).to be_a(Class)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe Dockit::Log do
|
46
|
+
it 'has a debug method' do
|
47
|
+
expect(subject).to respond_to('debug')
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#debug' do
|
51
|
+
it 'requires an array as its argument' do
|
52
|
+
expect { subject.debug() }.to raise_error(ArgumentError)
|
53
|
+
expect { subject.debug('foo') }.to raise_error(NoMethodError, /`join'/)
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'prints the message to $stderr' do
|
57
|
+
expect { subject.debug(%w[a test]) }.to output("DEBUG: a test\n").to_stderr
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe Dockit::Env do
|
63
|
+
before do
|
64
|
+
Dir.chdir(File.expand_path('deploy/mod', File.dirname(__FILE__)))
|
65
|
+
@parent = File.expand_path('..')
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'finds the project root' do
|
69
|
+
expect(subject.root).to eq(@parent)
|
70
|
+
end
|
71
|
+
|
72
|
+
describe '#modules' do
|
73
|
+
it_should_behave_like 'a dockit config', 'modules', %w[mod all], %w[. mod], 'rb'
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '#services' do
|
77
|
+
svcs = %w[mod svc]
|
78
|
+
it_should_behave_like 'a dockit config', 'services', svcs, svcs, 'yaml'
|
79
|
+
end
|
80
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,209 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dockit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rick Frankel
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-10-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.9'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.9'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.4'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.2'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.10'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.10'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.10'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: thor
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.19'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.19'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: dotenv
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '2.0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: docker-api
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.21'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.21'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: version
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.0'
|
139
|
+
description: Dockit is a builder for complex docker projects. Think scriptable docker-composer.
|
140
|
+
email:
|
141
|
+
- dockitk@rickster.com
|
142
|
+
executables:
|
143
|
+
- dockit
|
144
|
+
extensions: []
|
145
|
+
extra_rdoc_files: []
|
146
|
+
files:
|
147
|
+
- ".gitignore"
|
148
|
+
- Dockerfile
|
149
|
+
- Gemfile
|
150
|
+
- README.md
|
151
|
+
- Rakefile
|
152
|
+
- VERSION
|
153
|
+
- bin/console
|
154
|
+
- bin/dockit
|
155
|
+
- bin/setup
|
156
|
+
- dockit.gemspec
|
157
|
+
- lib/dockit.rb
|
158
|
+
- lib/dockit/cli.rb
|
159
|
+
- lib/dockit/config.rb
|
160
|
+
- lib/dockit/container.rb
|
161
|
+
- lib/dockit/digitalocean.rb
|
162
|
+
- lib/dockit/image.rb
|
163
|
+
- lib/dockit/service.rb
|
164
|
+
- spec/deploy/Dockit.rb
|
165
|
+
- spec/deploy/mod/Dockit.rb
|
166
|
+
- spec/deploy/mod/Dockit.yaml
|
167
|
+
- spec/deploy/svc/Dockit.yaml
|
168
|
+
- spec/dockit/bad.yaml
|
169
|
+
- spec/dockit/config_spec.rb
|
170
|
+
- spec/dockit/locals.yaml
|
171
|
+
- spec/dockit/simple.yaml
|
172
|
+
- spec/dockit_spec.rb
|
173
|
+
- spec/spec_helper.rb
|
174
|
+
homepage: https://github.com/cybercode/dockit
|
175
|
+
licenses:
|
176
|
+
- MIT
|
177
|
+
metadata: {}
|
178
|
+
post_install_message:
|
179
|
+
rdoc_options: []
|
180
|
+
require_paths:
|
181
|
+
- lib
|
182
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '0'
|
187
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ">="
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
requirements: []
|
193
|
+
rubyforge_project:
|
194
|
+
rubygems_version: 2.4.8
|
195
|
+
signing_key:
|
196
|
+
specification_version: 4
|
197
|
+
summary: A configuration manager and builder for docker projects.
|
198
|
+
test_files:
|
199
|
+
- spec/deploy/Dockit.rb
|
200
|
+
- spec/deploy/mod/Dockit.rb
|
201
|
+
- spec/deploy/mod/Dockit.yaml
|
202
|
+
- spec/deploy/svc/Dockit.yaml
|
203
|
+
- spec/dockit/bad.yaml
|
204
|
+
- spec/dockit/config_spec.rb
|
205
|
+
- spec/dockit/locals.yaml
|
206
|
+
- spec/dockit/simple.yaml
|
207
|
+
- spec/dockit_spec.rb
|
208
|
+
- spec/spec_helper.rb
|
209
|
+
has_rdoc:
|