dock0 0.0.8 → 0.0.9
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/.gitignore +1 -0
- data/.travis.yml +2 -0
- data/Rakefile +2 -7
- data/dock0.gemspec +5 -6
- data/lib/dock0.rb +26 -5
- data/spec/dock0_spec.rb +29 -2
- data/spec/examples/alpha.yml +4 -0
- data/spec/examples/beta.yml +4 -0
- data/spec/examples/image.yml +5 -0
- metadata +34 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88c5b1d4137f84e35d4a01d18b4ec614a4adb3b4
|
4
|
+
data.tar.gz: eb27dad335f368a046242a36475be8f844cdc041
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37a3ad2c146edf4abe250ef0b0523dd0a43ce3b539177c14dbee9c40985a1c9fc2901f0de815d84206e46affd5b67606f9cea9ba110f82607d26279305f95e48
|
7
|
+
data.tar.gz: 9fc04569d006102707eb51b19357d3093717ab3be3c19f398599ac45b095699f93cb72b23d6ccaaecc13797d7dc88880db2e07b504182d8e039668e20f2e057d
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Rakefile
CHANGED
@@ -6,14 +6,9 @@ desc 'Run tests'
|
|
6
6
|
RSpec::Core::RakeTask.new(:spec)
|
7
7
|
|
8
8
|
desc 'Run Rubocop on the gem'
|
9
|
-
|
9
|
+
RuboCop::RakeTask.new(:rubocop) do |task|
|
10
10
|
task.patterns = ['lib/**/*.rb', 'spec/**/*.rb']
|
11
11
|
task.fail_on_error = true
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
task :travislint do
|
16
|
-
print 'There may be an issue with your .travis.yml' unless system('travis-lint')
|
17
|
-
end
|
18
|
-
|
19
|
-
task default: [:spec, :travislint, :rubocop, :build]
|
14
|
+
task default: [:spec, :rubocop, :build]
|
data/dock0.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'dock0'
|
3
|
-
s.version = '0.0.
|
3
|
+
s.version = '0.0.9'
|
4
4
|
s.date = Time.now.strftime("%Y-%m-%d")
|
5
5
|
|
6
6
|
s.summary = 'Builds a read-only Arch host for Docker'
|
@@ -14,10 +14,9 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.test_files = `git ls-files spec/*`.split
|
15
15
|
s.executables = ['dock0']
|
16
16
|
|
17
|
-
s.add_development_dependency 'rubocop', '~> 0.
|
18
|
-
s.add_development_dependency '
|
19
|
-
s.add_development_dependency 'rake', '~> 10.1.1'
|
17
|
+
s.add_development_dependency 'rubocop', '~> 0.24.0'
|
18
|
+
s.add_development_dependency 'rake', '~> 10.3.2'
|
20
19
|
s.add_development_dependency 'coveralls', '~> 0.7.0'
|
21
|
-
s.add_development_dependency 'rspec', '~>
|
22
|
-
s.add_development_dependency 'fuubar', '~>
|
20
|
+
s.add_development_dependency 'rspec', '~> 3.0.0'
|
21
|
+
s.add_development_dependency 'fuubar', '~> 2.0.0.rc1'
|
23
22
|
end
|
data/lib/dock0.rb
CHANGED
@@ -14,17 +14,34 @@ module Dock0
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
+
##
|
18
|
+
# Default config for images
|
19
|
+
DEFAULT_CONFIG = {
|
20
|
+
'paths' => {
|
21
|
+
'device' => '/dev/xvdc',
|
22
|
+
'mount' => '/opt/target',
|
23
|
+
'build_file' => '/opt/build_file',
|
24
|
+
'build' => '/opt/build_file_mount',
|
25
|
+
'package_list' => './packages',
|
26
|
+
'overlay' => './overlay',
|
27
|
+
'scripts' => './scripts'
|
28
|
+
},
|
29
|
+
'root_size' => 512
|
30
|
+
}
|
31
|
+
|
17
32
|
##
|
18
33
|
# An Image is an Arch system being built
|
19
34
|
class Image
|
20
|
-
attr_reader :device_path, :config
|
35
|
+
attr_reader :device_path, :config, :stamp
|
21
36
|
|
22
37
|
##
|
23
38
|
# Make a new Image object with the given config
|
24
39
|
|
25
40
|
def initialize(*configs)
|
26
|
-
@config = configs.each_with_object(
|
27
|
-
|
41
|
+
@config = configs.each_with_object(DEFAULT_CONFIG.dup) do |path, obj|
|
42
|
+
new = YAML.load(File.read(path))
|
43
|
+
next unless new
|
44
|
+
obj.merge! new
|
28
45
|
end
|
29
46
|
@stamp = Time.new.strftime '%F-%H%M'
|
30
47
|
end
|
@@ -35,9 +52,13 @@ module Dock0
|
|
35
52
|
fail "Failed running #{cmd}:\n#{results}"
|
36
53
|
end
|
37
54
|
|
55
|
+
def run_chroot(cmd)
|
56
|
+
run "arch-chroot #{@config['paths']['build']} #{cmd}"
|
57
|
+
end
|
58
|
+
|
38
59
|
def prepare_device
|
39
60
|
puts "Making new filesystem on #{@config['paths']['device']}"
|
40
|
-
run "mkfs.
|
61
|
+
run "mkfs.ext4 -F #{@config['paths']['device']}"
|
41
62
|
puts "Mounting filesystem on #{@config['paths']['mount']}"
|
42
63
|
FileUtils.mkdir_p @config['paths']['mount']
|
43
64
|
run "mount #{@config['paths']['device']} #{@config['paths']['mount']}"
|
@@ -81,7 +102,7 @@ module Dock0
|
|
81
102
|
cmds = @config['commands']
|
82
103
|
cmds.fetch('chroot', []).each do |cmd|
|
83
104
|
puts "Running #{cmd} in chroot"
|
84
|
-
|
105
|
+
run_chroot cmd
|
85
106
|
end
|
86
107
|
cmds.fetch('host', []).each do |cmd|
|
87
108
|
puts "Running #{cmd} on host"
|
data/spec/dock0_spec.rb
CHANGED
@@ -1,7 +1,34 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'fileutils'
|
2
3
|
|
3
4
|
describe Dock0 do
|
4
|
-
|
5
|
-
|
5
|
+
describe '#new' do
|
6
|
+
it 'creates Image objects' do
|
7
|
+
expect(Dock0.new).to be_an_instance_of Dock0::Image
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Dock0::Image do
|
12
|
+
let(:image) { Dock0::Image.new 'spec/examples/image.yml' }
|
13
|
+
|
14
|
+
it 'loads stacked config files' do
|
15
|
+
config_image = Dock0::Image.new(
|
16
|
+
'spec/examples/alpha.yml', 'spec/examples/beta.yml'
|
17
|
+
)
|
18
|
+
result = { 'foo' => 'override', 'test' => 5, 'other' => 6 }
|
19
|
+
expect(config_image.config).to eql Dock0::DEFAULT_CONFIG.merge(result)
|
20
|
+
end
|
21
|
+
it 'has a timestamp' do
|
22
|
+
expect(Dock0::Image.new.stamp).to match(/\d{4}-\d{2}-\d{2}-\d{4}/)
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#run' do
|
26
|
+
it 'runs a command' do
|
27
|
+
expect(image.run('echo "hello"')).to eql "hello\n"
|
28
|
+
end
|
29
|
+
it 'raises if the command fails' do
|
30
|
+
expect { image.run('dasdks') }.to raise_error RuntimeError
|
31
|
+
end
|
32
|
+
end
|
6
33
|
end
|
7
34
|
end
|
metadata
CHANGED
@@ -1,99 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dock0
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Les Aker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.24.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: travis-lint
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.8.0
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 1.8.0
|
26
|
+
version: 0.24.0
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- - ~>
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: 10.
|
33
|
+
version: 10.3.2
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - ~>
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: 10.
|
40
|
+
version: 10.3.2
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: coveralls
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- - ~>
|
45
|
+
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: 0.7.0
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- - ~>
|
52
|
+
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: 0.7.0
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rspec
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- - ~>
|
59
|
+
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
61
|
+
version: 3.0.0
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- - ~>
|
66
|
+
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
68
|
+
version: 3.0.0
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: fuubar
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- - ~>
|
73
|
+
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
75
|
+
version: 2.0.0.rc1
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- - ~>
|
80
|
+
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
82
|
+
version: 2.0.0.rc1
|
97
83
|
description: Generates a read-only Arch host for running Docker containers
|
98
84
|
email: me@lesaker.org
|
99
85
|
executables:
|
@@ -101,10 +87,10 @@ executables:
|
|
101
87
|
extensions: []
|
102
88
|
extra_rdoc_files: []
|
103
89
|
files:
|
104
|
-
- .gitignore
|
105
|
-
- .rspec
|
106
|
-
- .rubocop.yml
|
107
|
-
- .travis.yml
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".rubocop.yml"
|
93
|
+
- ".travis.yml"
|
108
94
|
- Gemfile
|
109
95
|
- LICENSE
|
110
96
|
- README.md
|
@@ -113,6 +99,9 @@ files:
|
|
113
99
|
- dock0.gemspec
|
114
100
|
- lib/dock0.rb
|
115
101
|
- spec/dock0_spec.rb
|
102
|
+
- spec/examples/alpha.yml
|
103
|
+
- spec/examples/beta.yml
|
104
|
+
- spec/examples/image.yml
|
116
105
|
- spec/spec_helper.rb
|
117
106
|
homepage: https://github.com/aker/dock0
|
118
107
|
licenses:
|
@@ -124,20 +113,24 @@ require_paths:
|
|
124
113
|
- lib
|
125
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
126
115
|
requirements:
|
127
|
-
- -
|
116
|
+
- - ">="
|
128
117
|
- !ruby/object:Gem::Version
|
129
118
|
version: '0'
|
130
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
120
|
requirements:
|
132
|
-
- -
|
121
|
+
- - ">="
|
133
122
|
- !ruby/object:Gem::Version
|
134
123
|
version: '0'
|
135
124
|
requirements: []
|
136
125
|
rubyforge_project:
|
137
|
-
rubygems_version: 2.0.
|
126
|
+
rubygems_version: 2.0.14
|
138
127
|
signing_key:
|
139
128
|
specification_version: 4
|
140
129
|
summary: Builds a read-only Arch host for Docker
|
141
130
|
test_files:
|
142
131
|
- spec/dock0_spec.rb
|
132
|
+
- spec/examples/alpha.yml
|
133
|
+
- spec/examples/beta.yml
|
134
|
+
- spec/examples/image.yml
|
143
135
|
- spec/spec_helper.rb
|
136
|
+
has_rdoc:
|