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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b238d089226011f034ce5c9b8459534c6b513d4
4
- data.tar.gz: 882458842cec24f4eab1fd917a4f65acb2c86678
3
+ metadata.gz: 88c5b1d4137f84e35d4a01d18b4ec614a4adb3b4
4
+ data.tar.gz: eb27dad335f368a046242a36475be8f844cdc041
5
5
  SHA512:
6
- metadata.gz: c87a7ce67857bc1f87144c3e40d509f9705dd12af931ef793c322c8c085199b766a80e250966fa40ed657c785108050f7c0b46350c5ea972ca4e2af82d3c39bd
7
- data.tar.gz: bf23b528e9973accfdf5d219751fd944b9f5309cfade57885a85793b5559d157d5590cb8630ca4d04156dfaeb7406d8400bfcbe03d716c19d3d747bc4a878ec3
6
+ metadata.gz: 37a3ad2c146edf4abe250ef0b0523dd0a43ce3b539177c14dbee9c40985a1c9fc2901f0de815d84206e46affd5b67606f9cea9ba110f82607d26279305f95e48
7
+ data.tar.gz: 9fc04569d006102707eb51b19357d3093717ab3be3c19f398599ac45b095699f93cb72b23d6ccaaecc13797d7dc88880db2e07b504182d8e039668e20f2e057d
data/.gitignore CHANGED
@@ -3,3 +3,4 @@ pkg/*.gem
3
3
  coverage/
4
4
  .coveralls.yml
5
5
  .bundle
6
+ .test
data/.travis.yml CHANGED
@@ -1,6 +1,8 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
+ - 2.1.2
5
+ - 2.1.1
4
6
  - 2.1.0
5
7
  - 2.0.0
6
8
  - 1.9.3
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
- Rubocop::RakeTask.new(:rubocop) do |task|
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
- desc 'Run travis-lint on .travis.yml'
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.8'
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.19.0'
18
- s.add_development_dependency 'travis-lint', '~> 1.8.0'
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', '~> 2.14.1'
22
- s.add_development_dependency 'fuubar', '~> 1.3.2'
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({}) do |path, obj|
27
- obj.merge! YAML.load(File.read(path))
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.ext2 #{@config['paths']['device']}"
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
- run "arch-chroot #{@config['paths']['build']} #{cmd}"
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
- it 'is' do
5
- expect(1).to eql 1
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
@@ -0,0 +1,4 @@
1
+ ---
2
+ foo: bar
3
+ test: 5
4
+ ...
@@ -0,0 +1,4 @@
1
+ ---
2
+ foo: override
3
+ other: 6
4
+ ...
@@ -0,0 +1,5 @@
1
+ ---
2
+ paths:
3
+ device: .test/fs
4
+ mount: .test/mount
5
+ ...
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.8
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-03-21 00:00:00.000000000 Z
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.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.19.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.1.1
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.1.1
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: 2.14.1
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: 2.14.1
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: 1.3.2
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: 1.3.2
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.3
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: