dock0 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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: