macinbox 1.1.1 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e8ada3102753fe30348667d4fbfb2e5aa178f39
4
- data.tar.gz: 6bef79877bad0fde8bc350966ce45247053ce461
3
+ metadata.gz: 3f7eedd95d1b6f920f6cd85bfa88b3956ec05ac8
4
+ data.tar.gz: 023520243d7e43ef22b124cb5f83f3d983f586cc
5
5
  SHA512:
6
- metadata.gz: 3cde4d8b3f4a76d5dc57239f499a0421f833fcd72e64a3db10a00f5b9aaab99d00edf10d9b1fd860a193ff724974ae11e2f1677627e734aa44e4257219698835
7
- data.tar.gz: 4e463fe8c9daff3163aa27527f80993fe247fed5124aa162670cae896753e889e948770a73bf02707fb466e75c9f46e9838dec59f4af50e0a1b19720b7fb3564
6
+ metadata.gz: 3f93f92954238ea9a1a4944c9ceebbb73dc3dcf51bd016346cf4dc1a36f6df92afe628c27d19afc9f4f6aada44f00d6e9840626ab34d937b9259aa593cccad3b
7
+ data.tar.gz: 7757b07da2ddbf71e088e7fdad810b01fe05de659b823a8a389b9cf6b3458e55364101a8aaeda238c78a0195420d07456087a2f0f54165c9d0a202bb041eebc9
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- macinbox (1.1.1)
4
+ macinbox (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -20,12 +20,12 @@ Supports creating boxes in either the 'vmware_fusion' or 'parallels' formats.
20
20
 
21
21
  The following software is required. Versions other than those mentioned may work, but these are the latest versions tested:
22
22
 
23
- * [macOS 10.13.4 High Sierra installer application](http://appstore.com/mac/macoshighsierra)
24
- * [Vagrant 2.0.3](https://www.vagrantup.com/)
23
+ * [macOS 10.13.5 High Sierra installer application](http://appstore.com/mac/macoshighsierra)
24
+ * [Vagrant 2.1.1](https://www.vagrantup.com/)
25
25
 
26
26
  To create and boot a box in the 'vmware_fusion' format you must also have:
27
27
 
28
- * [VMware Fusion Pro 10.1.1](http://www.vmware.com/products/fusion.html)
28
+ * [VMware Fusion Pro 10.1.2](http://www.vmware.com/products/fusion.html)
29
29
  * [Vagrant VMware Fusion Provider 5.0.4](https://www.vagrantup.com/vmware/)
30
30
 
31
31
  To create and boot a box in the 'parallels' format you must also have:
@@ -66,6 +66,7 @@ Usage: macinbox [options]
66
66
 
67
67
  -n, --name NAME Name of the box (default: macinbox)
68
68
  -d, --disk SIZE Size (GB) of the disk (default: 64)
69
+ -t, --fstype TYPE Type for disk format (default: HFS+J)
69
70
  -m, --memory SIZE Size (MB) of the memory (default: 2048)
70
71
  -c, --cpu COUNT Number of virtual cores (default: 2)
71
72
  -s, --short NAME Short name of the user (default: vagrant)
@@ -19,6 +19,7 @@ module Macinbox
19
19
  @parallels_app = opts[:parallels_path]
20
20
 
21
21
  @disk_size = opts[:disk_size] or raise ArgumentError.new(":disk_size not specified")
22
+ @fstype = opts[:fstype] or raise ArgumentError.new(":fstype not specified")
22
23
  @short_name = opts[:short_name] or raise ArgumentError.new(":short_name not specified")
23
24
  @full_name = opts[:full_name] or raise ArgumentError.new(":full_name not specified")
24
25
  @password = opts[:password] or raise ArgumentError.new(":password not specified")
@@ -95,7 +96,7 @@ module Macinbox
95
96
  @scratch_image = "#{@temp_dir}/scratch.sparseimage"
96
97
  FileUtils.mkdir @scratch_mountpoint
97
98
  quiet_flag = @debug ? [] : %W[ -quiet ]
98
- Task.run %W[ hdiutil create -size #{@disk_size}g -type SPARSE -fs HFS+J -volname #{"Macintosh HD"} -uid 0 -gid 80 -mode 1775 #{@scratch_image} ] + quiet_flag
99
+ Task.run %W[ hdiutil create -size #{@disk_size}g -type SPARSE -fs #{@fstype} -volname #{"Macintosh HD"} -uid 0 -gid 80 -mode 1775 #{@scratch_image} ] + quiet_flag
99
100
  Task.run %W[ hdiutil attach #{@scratch_image} -mountpoint #{@scratch_mountpoint} -nobrowse -owners on ] + quiet_flag
100
101
  end
101
102
  end
@@ -340,7 +341,21 @@ module Macinbox
340
341
 
341
342
  def save_image
342
343
  Logger.info "Saving the image..." do
343
- Task.run %W[ hdiutil detach -quiet #{@scratch_mountpoint} ]
344
+ # detaching sometimes fails at first so we pause to let the disk
345
+ # quiesce and then retry again a few times before giving up
346
+ max_attempts = 5
347
+ for attempt in 1..max_attempts
348
+ begin
349
+ Logger.info "Detaching the image..." if @debug
350
+ quiet_flag = @debug ? [] : %W[ -quiet ]
351
+ Task.run %W[ hdiutil detach #{@scratch_mountpoint} ] + quiet_flag
352
+ break
353
+ rescue Macinbox::Error => error
354
+ raise if attempt == max_attempts
355
+ Logger.info "#{error.message}. Sleeping and retrying..." if @debug
356
+ sleep 15
357
+ end
358
+ end
344
359
  FileUtils.mv @scratch_image, "#{@temp_dir}/macinbox.dmg"
345
360
  FileUtils.chown ENV["SUDO_USER"], nil, "#{@temp_dir}/macinbox.dmg"
346
361
  FileUtils.mv "#{@temp_dir}/macinbox.dmg", @output_path
@@ -10,6 +10,7 @@ module Macinbox
10
10
  :box_format => "vmware_fusion",
11
11
  :box_name => "macinbox",
12
12
  :disk_size => 64,
13
+ :fstype => "HFS+J",
13
14
  :memory_size => 2048,
14
15
  :cpu_count => 2,
15
16
  :short_name => "vagrant",
@@ -36,6 +37,7 @@ module Macinbox
36
37
  o.separator ''
37
38
  o.on('-n', '--name NAME', 'Name of the box (default: macinbox)') { |v| @options[:box_name] = v }
38
39
  o.on('-d', '--disk SIZE', 'Size (GB) of the disk (default: 64)') { |v| @options[:disk_size] = v }
40
+ o.on('-t', '--fstype TYPE', 'Type of FS on the disk (default: HFS+J)') { |v| @options[:fstype] = v }
39
41
  o.on('-m', '--memory SIZE', 'Size (MB) of the memory (default: 2048)') { |v| @options[:memory_size] = v }
40
42
  o.on('-c', '--cpu COUNT', 'Number of virtual cores (default: 2)') { |v| @options[:cpu_count] = v }
41
43
  o.on('-s', '--short NAME', 'Short name of the user (default: vagrant)') { |v| @options[:short_name] = v }
data/lib/macinbox/task.rb CHANGED
@@ -7,7 +7,7 @@ module Macinbox
7
7
  class Task
8
8
 
9
9
  def self.run(cmd)
10
- system(*cmd) or raise Macinbox::Error.new("#{cmd.slice(0)} failed with non-zero exit code: #{$?.to_i}")
10
+ system(*cmd) or raise Macinbox::Error.new("#{cmd.slice(0)} failed with non-zero exit code: #{$? >> 8}")
11
11
  end
12
12
 
13
13
  def self.run_as_sudo_user(cmd)
@@ -1,3 +1,3 @@
1
1
  module Macinbox
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: macinbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Kramer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-23 00:00:00.000000000 Z
11
+ date: 2018-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler