dock0 0.0.1 → 0.0.2

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: 77e31bedaa3cdf7f2f0b6a1d9f3b2a616507c3e8
4
- data.tar.gz: 4aa1571f764516df89d8ecef220b194c0ecad8d5
3
+ metadata.gz: d2f57a1a3b08ff1f59b94635eaeebe86039b4058
4
+ data.tar.gz: cfc32381992549151e151df216fffefd2ff30ea9
5
5
  SHA512:
6
- metadata.gz: 490523b79088c2c192cfd060f8bebfd8f63de4f23c390f2604b8a42aa557195e05348554ca461fb9da38ac41d503f1150bd5ad67ea7fecf9f3345ff192edf1ab
7
- data.tar.gz: 88b2b55fd8e9ae34af1ebca922cfcbc1a73b8250833daf352171830de2c22c1206980581398513f1790cd97242e1b3d98e7428d858d1f451304c8d63194c3478
6
+ metadata.gz: 99559e3271444984bfc633f002c62d65f89fead820e14840ad74b3406ea0d8ed4d13dda25b3df11199287ea4770d834a60aa1b7c0ca7dbf5ee660c5b031bfb5b
7
+ data.tar.gz: b5d1a12d8a1773dd1744a9e3099e9ccf85ec068f1f6d4fadfba06963dc2b64d70bbbeb343797bd07a44e41e91681125d2874914faaf13faa6b97c9be9a69b952
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ Gemfile.lock
1
2
  pkg/*.gem
2
3
  coverage/
3
4
  .coveralls.yml
data/bin/dock0 CHANGED
@@ -3,6 +3,6 @@
3
3
  require 'dock0'
4
4
 
5
5
  Dir.chdir File.dirname(ARGV.first)
6
- Dock0.new(ARGV).easy_mode
6
+ Dock0.new(*ARGV).easy_mode
7
7
 
8
8
  puts 'All done!'
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'dock0'
3
- s.version = '0.0.1'
3
+ s.version = '0.0.2'
4
4
  s.date = Time.now.strftime("%Y-%m-%d")
5
5
 
6
6
  s.summary = 'Builds a read-only Arch host for Docker'
@@ -17,4 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_development_dependency 'rubocop'
18
18
  s.add_development_dependency 'travis-lint'
19
19
  s.add_development_dependency 'rake'
20
+ s.add_development_dependency 'coveralls'
21
+ s.add_development_dependency 'rspec'
22
+ s.add_development_dependency 'fuubar'
20
23
  end
@@ -1,5 +1,6 @@
1
1
  require 'yaml'
2
2
  require 'fileutils'
3
+ require 'english'
3
4
 
4
5
  ##
5
6
  # Dock0 provides an interface for building Arch images
@@ -29,44 +30,80 @@ module Dock0
29
30
  end
30
31
  end
31
32
 
33
+ def run(cmd)
34
+ results = `#{cmd} 2>&1`
35
+ return results if $CHILD_STATUS.success?
36
+ fail "Failed running #{cmd}:\n#{results}"
37
+ end
38
+
32
39
  def prepare_device
33
- `mkfs.ext2 #{@config['paths']['device']}`
34
- `mount #{@config['paths']['device']} #{@config['paths']['mount']}`
40
+ puts "Making new filesystem on #{@config['paths']['device']}"
41
+ run "mkfs.ext2 #{@config['paths']['device']}"
42
+ puts "Mounting filesystem on #{@config['paths']['mount']}"
43
+ FileUtils.mkdir_p @config['paths']['mount']
44
+ run "mount #{@config['paths']['device']} #{@config['paths']['mount']}"
45
+ end
46
+
47
+ def prepare_root
48
+ puts "Making build FS at #{@config['paths']['build_file']}"
49
+ run "dd if=/dev/zero of=#{@config['paths']['build_file']} \
50
+ bs=1M count=#{@config['root_size']}"
51
+ run "mkfs.ext2 -F #{@config['paths']['build_file']}"
52
+ puts "Mounting FS at #{@config['paths']['build']}"
53
+ FileUtils.mkdir_p @config['paths']['build']
54
+ run "mount #{@config['paths']['build_file']} \
55
+ #{@config['paths']['build']}"
35
56
  end
36
57
 
37
58
  def install_packages
38
59
  File.read(@config['paths']['package_list']).split("\n").each do |package|
39
- `pacstrap -G -M #{@config['paths']['mount']} #{package}`
60
+ puts "Installing #{package}"
61
+ run "pacstrap -G -M #{@config['paths']['build']} #{package}"
40
62
  end
41
63
  end
42
64
 
43
65
  def apply_overlay
66
+ puts "Applying overlay from #{@config['paths']['overlay']}"
44
67
  overlay_path = @config['paths']['overlay'] + '/.'
45
- FileUtils.cp_r overlay_path, @config['paths']['mount']
68
+ FileUtils.cp_r overlay_path, @config['paths']['build']
46
69
  end
47
70
 
48
71
  def run_scripts
49
72
  Dir.glob(@config['paths']['scripts'] + '/*.rb').each do |script|
50
- load script
73
+ puts "Running #{script}"
74
+ instance_eval File.read(script), script, 0
51
75
  end
52
76
  end
53
77
 
54
78
  def run_commands
55
79
  cmds = @config['commands']
56
80
  cmds.fetch('chroot', []).each do |cmd|
57
- `arch_chroot #{@config['path']['mount']} #{cmd}`
81
+ puts "Running #{cmd} in chroot"
82
+ run "arch-chroot #{@config['paths']['build']} #{cmd}"
58
83
  end
59
84
  cmds.fetch('host', []).each do |cmd|
60
- `#{cmd}`
85
+ puts "Running #{cmd} on host"
86
+ run cmd
61
87
  end
62
88
  end
63
89
 
90
+ def finalize
91
+ puts 'Packing up root FS'
92
+ run "umount #{@config['paths']['build']}"
93
+ run "mksquashfs #{@config['paths']['build_file']} \
94
+ #{@config['paths']['mount']}/root.fs.sfs"
95
+ puts 'Unmounting target device'
96
+ run "umount #{@config['paths']['mount']}"
97
+ end
98
+
64
99
  def easy_mode
65
100
  prepare_device
101
+ prepare_root
66
102
  install_packages
67
103
  apply_overlay
68
104
  run_scripts
69
105
  run_commands
106
+ finalize
70
107
  end
71
108
  end
72
109
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dock0
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
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-01-26 00:00:00.000000000 Z
11
+ date: 2014-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -52,6 +52,48 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: fuubar
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
55
97
  description: Generates a read-only Arch host for running Docker containers
56
98
  email: me@lesaker.org
57
99
  executables:
@@ -64,7 +106,6 @@ files:
64
106
  - ".rubocop.yml"
65
107
  - ".travis.yml"
66
108
  - Gemfile
67
- - Gemfile.lock
68
109
  - LICENSE
69
110
  - README.md
70
111
  - Rakefile
@@ -1,34 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- dock0 (0.0.1)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- ast (1.1.0)
10
- hashr (0.0.22)
11
- json (1.8.1)
12
- parser (2.1.4)
13
- ast (~> 1.1)
14
- slop (~> 3.4, >= 3.4.5)
15
- powerpack (0.0.9)
16
- rainbow (1.99.2)
17
- rake (10.1.1)
18
- rubocop (0.17.0)
19
- json (~> 1.8)
20
- parser (~> 2.1.3)
21
- powerpack (~> 0.0.6)
22
- rainbow (~> 1.99.1)
23
- slop (3.4.7)
24
- travis-lint (1.7.0)
25
- hashr (~> 0.0.22)
26
-
27
- PLATFORMS
28
- ruby
29
-
30
- DEPENDENCIES
31
- dock0!
32
- rake
33
- rubocop
34
- travis-lint