getch 0.1.5 → 0.1.6

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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +64 -24
  5. data/assets/network-stack.conf +63 -0
  6. data/bin/getch +12 -4
  7. data/lib/getch.rb +113 -78
  8. data/lib/getch/command.rb +1 -1
  9. data/lib/getch/config.rb +33 -49
  10. data/lib/getch/config/gentoo.rb +59 -0
  11. data/lib/getch/config/void.rb +49 -0
  12. data/lib/getch/filesystem/.mount.rb.swp +0 -0
  13. data/lib/getch/filesystem/device.rb +5 -5
  14. data/lib/getch/filesystem/ext4.rb +1 -0
  15. data/lib/getch/filesystem/ext4/encrypt.rb +1 -0
  16. data/lib/getch/filesystem/ext4/encrypt/config.rb +2 -2
  17. data/lib/getch/filesystem/ext4/encrypt/format.rb +0 -1
  18. data/lib/getch/filesystem/ext4/encrypt/mount.rb +0 -1
  19. data/lib/getch/filesystem/ext4/encrypt/partition.rb +10 -16
  20. data/lib/getch/filesystem/ext4/encrypt/void.rb +100 -0
  21. data/lib/getch/filesystem/ext4/format.rb +1 -1
  22. data/lib/getch/filesystem/ext4/void.rb +43 -0
  23. data/lib/getch/filesystem/lvm.rb +1 -0
  24. data/lib/getch/filesystem/lvm/encrypt.rb +1 -0
  25. data/lib/getch/filesystem/lvm/encrypt/config.rb +2 -2
  26. data/lib/getch/filesystem/lvm/encrypt/format.rb +1 -2
  27. data/lib/getch/filesystem/lvm/encrypt/mount.rb +1 -2
  28. data/lib/getch/filesystem/lvm/encrypt/partition.rb +10 -7
  29. data/lib/getch/filesystem/lvm/encrypt/void.rb +100 -0
  30. data/lib/getch/filesystem/lvm/format.rb +1 -1
  31. data/lib/getch/filesystem/lvm/void.rb +45 -0
  32. data/lib/getch/filesystem/partition.rb +4 -4
  33. data/lib/getch/filesystem/zfs.rb +1 -0
  34. data/lib/getch/filesystem/zfs/config.rb +3 -3
  35. data/lib/getch/filesystem/zfs/deps.rb +11 -4
  36. data/lib/getch/filesystem/zfs/device.rb +6 -0
  37. data/lib/getch/filesystem/zfs/encrypt.rb +1 -0
  38. data/lib/getch/filesystem/zfs/encrypt/.mount.rb.swp +0 -0
  39. data/lib/getch/filesystem/zfs/encrypt/config.rb +5 -5
  40. data/lib/getch/filesystem/zfs/encrypt/deps.rb +11 -4
  41. data/lib/getch/filesystem/zfs/encrypt/device.rb +6 -0
  42. data/lib/getch/filesystem/zfs/encrypt/format.rb +9 -10
  43. data/lib/getch/filesystem/zfs/encrypt/mount.rb +5 -9
  44. data/lib/getch/filesystem/zfs/encrypt/partition.rb +3 -1
  45. data/lib/getch/filesystem/zfs/encrypt/void.rb +96 -0
  46. data/lib/getch/filesystem/zfs/format.rb +9 -9
  47. data/lib/getch/filesystem/zfs/mount.rb +5 -8
  48. data/lib/getch/filesystem/zfs/partition.rb +2 -1
  49. data/lib/getch/filesystem/zfs/void.rb +81 -0
  50. data/lib/getch/gentoo.rb +12 -15
  51. data/lib/getch/gentoo/boot.rb +7 -4
  52. data/lib/getch/gentoo/config.rb +8 -8
  53. data/lib/getch/gentoo/sources.rb +6 -3
  54. data/lib/getch/gentoo/stage.rb +0 -1
  55. data/lib/getch/gentoo/use_flag.rb +6 -7
  56. data/lib/getch/guard.rb +3 -1
  57. data/lib/getch/helpers.rb +107 -1
  58. data/lib/getch/log.rb +3 -2
  59. data/lib/getch/options.rb +41 -34
  60. data/lib/getch/version.rb +1 -1
  61. data/lib/getch/void.rb +59 -0
  62. data/lib/getch/void/boot.rb +80 -0
  63. data/lib/getch/void/chroot.rb +55 -0
  64. data/lib/getch/void/config.rb +87 -0
  65. data/lib/getch/void/stage.rb +70 -0
  66. metadata +22 -9
  67. metadata.gz.sig +0 -0
  68. data/.gitignore +0 -2
  69. data/CHANGELOG.md +0 -99
  70. data/Rakefile +0 -21
  71. data/bin/setup.sh +0 -90
  72. data/getch.gemspec +0 -25
data/lib/getch/gentoo.rb CHANGED
@@ -8,42 +8,40 @@ require_relative 'gentoo/use_flag'
8
8
 
9
9
  module Getch
10
10
  module Gentoo
11
- class << self
12
- def new
11
+ class Main
12
+ def initialize
13
13
  @state = Getch::States.new()
14
14
  end
15
15
 
16
16
  def stage3
17
17
  return if STATES[:gentoo_base]
18
- new
19
- stage = Getch::Gentoo::Stage.new()
18
+ stage = Getch::Gentoo::Stage.new
20
19
  stage.get_stage3
21
20
  stage.control_files
22
21
  stage.checksum
23
22
  @state.stage3
24
23
  end
25
24
 
26
- def config(options)
25
+ def config
27
26
  return if STATES[:gentoo_config]
28
- new
29
- config = Getch::Gentoo::Config.new()
27
+ config = Getch::Gentoo::Config.new
30
28
  config.portage
31
29
  config.portage_fs
32
30
  config.portage_bashrc
33
31
  config.repo
34
32
  config.network
35
- config.systemd(options)
33
+ config.systemd
36
34
  config.hostname
37
35
  @state.config
38
36
  end
39
37
 
40
- def chroot(options)
41
- chroot = Getch::Gentoo::Chroot.new()
38
+ def chroot
39
+ chroot = Getch::Gentoo::Chroot.new
42
40
  chroot.update
43
41
  chroot.cpuflags
44
42
  chroot.systemd
45
43
 
46
- flags = Getch::Gentoo::UseFlag.new(options)
44
+ flags = Getch::Gentoo::UseFlag.new
47
45
  flags.apply
48
46
 
49
47
  chroot.world
@@ -56,8 +54,7 @@ module Getch
56
54
 
57
55
  def kernel
58
56
  return if STATES[:gentoo_kernel]
59
- source = Getch::Gentoo::Sources.new()
60
- new
57
+ source = Getch::Gentoo::Sources.new
61
58
  source.build_kspp
62
59
  source.build_others
63
60
  source.firewall
@@ -65,8 +62,8 @@ module Getch
65
62
  @state.kernel
66
63
  end
67
64
 
68
- def boot(options)
69
- boot = Getch::Gentoo::Boot.new(options)
65
+ def boot
66
+ boot = Getch::Gentoo::Boot.new
70
67
  boot.start
71
68
  end
72
69
  end
@@ -3,10 +3,13 @@ require 'fileutils'
3
3
  module Getch
4
4
  module Gentoo
5
5
  class Boot
6
- def initialize(opts)
7
- @disk = opts.boot_disk ? opts.boot_disk : opts.disk
8
- @user = opts.username
9
- @config = Getch.class_fs::Config.new()
6
+ def initialize
7
+ @disk = Getch::OPTIONS[:boot_disk] ?
8
+ Getch::OPTIONS[:boot_disk] :
9
+ Getch::OPTIONS[:disk]
10
+ @user = Getch::OPTIONS[:username]
11
+ @class_fs = Getch::select_fs
12
+ @config = @class_fs::Config.new
10
13
  end
11
14
 
12
15
  def start
@@ -69,13 +69,13 @@ module Getch
69
69
  FileUtils.copy_file(src, dest, preserve = true)
70
70
  end
71
71
 
72
- def systemd(options)
73
- control_options(options)
72
+ def systemd
73
+ control_options
74
74
  File.write("#{MOUNTPOINT}/etc/locale.gen", @utf8)
75
75
  File.write("#{MOUNTPOINT}/etc/locale.conf", "LANG=#{@lang}\n")
76
76
  File.write("#{MOUNTPOINT}/etc/locale.conf", 'LC_COLLATE=C', mode: 'a')
77
- File.write("#{MOUNTPOINT}/etc/timezone", "#{options.zoneinfo}")
78
- File.write("#{MOUNTPOINT}/etc/vconsole.conf", "KEYMAP=#{options.keymap}")
77
+ File.write("#{MOUNTPOINT}/etc/timezone", "#{Getch::OPTIONS[:zoneinfo]}\n")
78
+ File.write("#{MOUNTPOINT}/etc/vconsole.conf", "KEYMAP=#{Getch::OPTIONS[:keymap]}\n")
79
79
  end
80
80
 
81
81
  def hostname
@@ -130,10 +130,10 @@ function pre_pkg_preinst() {
130
130
 
131
131
  private
132
132
 
133
- def control_options(options)
134
- search_zone(options.zoneinfo)
135
- search_utf8(options.language)
136
- search_key(options.keymap)
133
+ def control_options
134
+ search_zone(Getch::OPTIONS[:zoneinfo])
135
+ search_utf8(Getch::OPTIONS[:language])
136
+ search_key(Getch::OPTIONS[:keymap])
137
137
  end
138
138
 
139
139
  def search_key(keys)
@@ -3,7 +3,8 @@ module Getch
3
3
  class Sources
4
4
  def initialize
5
5
  @lsmod = `lsmod`.chomp
6
- @filesystem = Getch.class_fs::Deps.new()
6
+ @class_fs = Getch::select_fs
7
+ @filesystem = @class_fs::Deps.new
7
8
  end
8
9
 
9
10
  def build_others
@@ -21,7 +22,9 @@ module Getch
21
22
  end
22
23
 
23
24
  def make
24
- if DEFAULT_OPTIONS[:fs] == 'lvm' || DEFAULT_OPTIONS[:fs] == 'zfs' || DEFAULT_OPTIONS[:encrypt]
25
+ if Getch::OPTIONS[:fs] == 'lvm' ||
26
+ Getch::OPTIONS[:fs] == 'zfs' ||
27
+ Getch::OPTIONS[:encrypt]
25
28
  @filesystem.make
26
29
  else
27
30
  make_kernel
@@ -44,7 +47,7 @@ module Getch
44
47
  end
45
48
 
46
49
  def cryptsetup
47
- return unless DEFAULT_OPTIONS[:encrypt]
50
+ return unless Getch::OPTIONS[:encrypt]
48
51
  make_conf = "#{MOUNTPOINT}/etc/portage/make.conf"
49
52
 
50
53
  puts "Adding support for cryptsetup."
@@ -4,7 +4,6 @@ require 'open3'
4
4
  module Getch
5
5
  module Gentoo
6
6
  class Stage
7
-
8
7
  def initialize
9
8
  @mirror = "https://mirrors.soeasyto.com/distfiles.gentoo.org"
10
9
  @release = release
@@ -2,9 +2,8 @@
2
2
 
3
3
  module Getch::Gentoo
4
4
  class UseFlag
5
- def initialize(options)
5
+ def initialize
6
6
  @efi = Helpers::efi?
7
- @o = options
8
7
  end
9
8
 
10
9
  def apply
@@ -36,13 +35,13 @@ module Getch::Gentoo
36
35
  flags = []
37
36
  use = Getch::Gentoo::Use.new('sys-boot/grub')
38
37
  flags << '-grub_platforms_efi-64'
39
- flags << 'libzfs' if @o.fs == 'zfs'
40
- flags << 'device-mapper' if @o.fs == 'lvm'
38
+ flags << 'libzfs' if Getch::OPTIONS[:fs] == 'zfs'
39
+ flags << 'device-mapper' if Getch::OPTIONS[:fs] == 'lvm'
41
40
  use.add(flags)
42
41
  end
43
42
 
44
43
  def zfs
45
- return unless @o.fs == 'zfs'
44
+ return unless Getch::OPTIONS[:fs] == 'zfs'
46
45
  use = Getch::Gentoo::Use.new('sys-fs/zfs-kmod')
47
46
  use.add('rootfs')
48
47
  use = Getch::Gentoo::Use.new('sys-fs/zfs')
@@ -50,13 +49,13 @@ module Getch::Gentoo
50
49
  end
51
50
 
52
51
  def lvm
53
- return unless @o.fs == 'lvm'
52
+ return unless Getch::OPTIONS[:fs] == 'lvm'
54
53
  use = Getch::Gentoo::Use.new
55
54
  use.add_global('lvm', 'device-mapper')
56
55
  end
57
56
 
58
57
  def cryptsetup
59
- return unless @o.encrypt
58
+ return unless Getch::OPTIONS[:encrypt]
60
59
  use = Getch::Gentoo::Use.new
61
60
  use.add_global('cryptsetup')
62
61
  end
data/lib/getch/guard.rb CHANGED
@@ -24,7 +24,8 @@ module Getch::Guard
24
24
  def self.format(name)
25
25
  raise InvalidFormat, "No format specified." unless name
26
26
  raise InvalidFormat, "Format #{name} not yet available." if name.match(/btrfs/)
27
- raise InvalidFormat, "Format #{name} not supported." unless name.match(/zfs|lvm|zfs/)
27
+ raise InvalidFormat, "Format #{name} not supported." unless name.match(/zfs|lvm|ext4/)
28
+ name
28
29
  rescue InvalidFormat => e
29
30
  puts "#{e.class} => #{e}"
30
31
  exit 1
@@ -34,6 +35,7 @@ module Getch::Guard
34
35
  raise InvalidZone, "No zoneinfo specified." unless name
35
36
  raise InvalidZone, "Directory /usr/share/zoneinfo/ no found on this system..." unless Dir.exist? "/usr/share/zoneinfo/"
36
37
  raise InvalidZone, "Zoneinfo #{name} is no found in /usr/share/zoneinfo/." unless File.exist? "/usr/share/zoneinfo/#{name}"
38
+ name
37
39
  rescue InvalidZone => e
38
40
  puts "#{e.class} => #{e}"
39
41
  exit 1
data/lib/getch/helpers.rb CHANGED
@@ -38,6 +38,11 @@ module Helpers
38
38
  File.write file, '' if ! File.exist? file
39
39
  end
40
40
 
41
+ def self.cp(src, dest)
42
+ raise "Src file #{src} no found" unless File.exist? src
43
+ FileUtils.cp(src, dest)
44
+ end
45
+
41
46
  def self.grep?(file, regex)
42
47
  is_found = false
43
48
  return is_found if ! File.exist? file
@@ -61,7 +66,11 @@ module Helpers
61
66
  end
62
67
 
63
68
  def self.uuid(dev)
64
- `lsblk -do UUID #{dev}`.match(/[\w]+-[\w]+-[\w]+-[\w]+-[\w]+/)
69
+ Dir.glob("/dev/disk/by-uuid/*").each { |f|
70
+ if File.readlink(f).match(/#{dev}/)
71
+ return f.delete_prefix("/dev/disk/by-uuid/")
72
+ end
73
+ }
65
74
  end
66
75
 
67
76
  # Used with ZFS for the pool name
@@ -82,4 +91,101 @@ module Helpers
82
91
  end
83
92
  end
84
93
  end
94
+
95
+ module Void
96
+ def command(args)
97
+ print " => Exec: #{args}..."
98
+ cmd = "chroot #{Getch::MOUNTPOINT} /bin/bash -c \"#{args}\""
99
+ _, stderr, status = Open3.capture3(cmd)
100
+ if status.success? then
101
+ puts "\s[OK]"
102
+ return
103
+ end
104
+ raise "\n[-] Fail cmd #{args} - #{stderr}."
105
+ end
106
+
107
+ def command_output(args)
108
+ print " => Exec: #{args}..."
109
+ cmd = "chroot #{Getch::MOUNTPOINT} /bin/bash -c \"#{args}\""
110
+ Open3.popen2e(cmd) do |stdin, stdout_err, wait_thr|
111
+ puts
112
+ while line = stdout_err.gets
113
+ puts line
114
+ end
115
+
116
+ exit_status = wait_thr.value
117
+ unless exit_status.success?
118
+ raise "\n[-] Fail cmd #{args} - #{stdout_err}."
119
+ end
120
+ end
121
+ end
122
+
123
+ def add_line(file, line)
124
+ raise "No file #{file} found !" unless File.exist? file
125
+ File.write(file, "#{line}\n", mode: 'a')
126
+ end
127
+
128
+ def search(file, text)
129
+ File.open(file).each { |line|
130
+ return true if line.match(/#{text}/)
131
+ }
132
+ return false
133
+ end
134
+
135
+ # Used only when need password
136
+ def chroot(cmd)
137
+ if !system("chroot", Getch::MOUNTPOINT, "/bin/bash", "-c", cmd)
138
+ raise "[-] Error with: #{cmd}"
139
+ end
140
+ end
141
+
142
+ def s_uuid(dev)
143
+ device = dev.delete_prefix("/dev/")
144
+ Dir.glob("/dev/disk/by-partuuid/*").each { |f|
145
+ link = File.readlink(f)
146
+ return f.delete_prefix("/dev/disk/by-partuuid/") if link.match(/#{device}$/)
147
+ }
148
+ end
149
+
150
+ def line_fstab(dev, rest)
151
+ conf = "#{Getch::MOUNTPOINT}/etc/fstab"
152
+ device = s_uuid(dev)
153
+ raise "No partuuid for #{dev} #{device}" if !device
154
+ raise "Bad partuuid for #{dev} #{device}" if device.kind_of? Array
155
+ add_line(conf, "PARTUUID=#{device} #{rest}")
156
+ end
157
+
158
+ def grub_cmdline(*args)
159
+ conf = "#{Getch::MOUNTPOINT}/etc/default/grub"
160
+ list = args.join(" ")
161
+ secs = "GRUB_CMDLINE_LINUX=\"#{list} init_on_alloc=1 init_on_free=1"
162
+ secs += " slab_nomerge pti=on slub_debug=ZF vsyscall=none\""
163
+ raise "No default/grub found" unless File.exist? conf
164
+ unless search(conf, "GRUB_CMDLINE_LINUX=")
165
+ File.write(conf, "#{secs}\n", mode: 'a')
166
+ end
167
+ end
168
+ end
169
+
170
+ module Cryptsetup
171
+ def encrypt(dev)
172
+ raise "No device #{dev}" unless File.exist? dev
173
+ puts " => Encrypting device #{dev}..."
174
+ if Helpers::efi? && Getch::OPTIONS[:os] == 'gentoo'
175
+ Helpers::sys("cryptsetup luksFormat --type luks #{dev}")
176
+ else
177
+ Helpers::sys("cryptsetup luksFormat --type luks1 #{dev}")
178
+ end
179
+ end
180
+
181
+ def open_crypt(dev, map_name)
182
+ raise "No device #{dev}" unless File.exist? dev
183
+ puts " => Opening encrypted device #{dev}..."
184
+ if Helpers::efi? && Getch::OPTIONS[:os] == 'gentoo'
185
+ Helpers::sys("cryptsetup open --type luks #{dev} #{map_name}")
186
+ else
187
+ Helpers::sys("cryptsetup open --type luks1 #{dev} #{map_name}")
188
+ end
189
+ end
190
+ end
85
191
  end
data/lib/getch/log.rb CHANGED
@@ -2,8 +2,9 @@ require 'logger'
2
2
 
3
3
  module Getch
4
4
  class Log
5
- def initialize
5
+ def initialize(verbose = false)
6
6
  @log_file = '/tmp/log_install.txt'
7
+ @verbose = verbose
7
8
  check_file
8
9
  init_log
9
10
  init_log_text
@@ -37,7 +38,7 @@ module Getch
37
38
 
38
39
  def init_log
39
40
  @logger = Logger.new(STDOUT)
40
- @logger.level = DEFAULT_OPTIONS[:verbose] ? Logger::DEBUG : Logger::INFO
41
+ @logger.level = @verbose ? Logger::DEBUG : Logger::INFO
41
42
  @logger.formatter = proc { |severity, datetime, progname, msg|
42
43
  "#{severity}, #{msg}\n"
43
44
  }
data/lib/getch/options.rb CHANGED
@@ -2,20 +2,7 @@ require 'optparse'
2
2
 
3
3
  module Getch
4
4
  class Options
5
- attr_reader :language, :zoneinfo, :keymap, :disk, :fs, :username, :boot_disk, :cache_disk, :home_disk, :encrypt, :verbose
6
-
7
5
  def initialize(argv)
8
- @language = DEFAULT_OPTIONS[:language]
9
- @zoneinfo = DEFAULT_OPTIONS[:zoneinfo]
10
- @keymap = DEFAULT_OPTIONS[:keymap]
11
- @disk = DEFAULT_OPTIONS[:disk]
12
- @fs = DEFAULT_OPTIONS[:fs]
13
- @username = DEFAULT_OPTIONS[:username]
14
- @boot_disk = DEFAULT_OPTIONS[:boot_disk]
15
- @cache_disk = DEFAULT_OPTIONS[:cache_disk]
16
- @home_disk = DEFAULT_OPTIONS[:home_disk]
17
- @encrypt = DEFAULT_OPTIONS[:encrypt]
18
- @verbose = DEFAULT_OPTIONS[:verbose]
19
6
  parse(argv)
20
7
  end
21
8
 
@@ -23,48 +10,68 @@ module Getch
23
10
 
24
11
  def parse(argv)
25
12
  OptionParser.new do |opts|
13
+ opts.version = VERSION
14
+
26
15
  opts.on("-l", "--language LANG", "Default is en_US") do |lang|
27
- @language = lang
16
+ OPTIONS[:language] = lang
28
17
  end
18
+
29
19
  opts.on("-z", "--zoneinfo ZONE", "Default is US/Eastern") do |zone|
30
- @zoneinfo = Getch::Guard.zone(zone)
20
+ OPTIONS[:zoneinfo] = Getch::Guard.zone(zone)
31
21
  end
22
+
32
23
  opts.on("-k", "--keymap KEY", "Default is us") do |key|
33
- @keymap = Getch::Guard.keymap(key)
24
+ OPTIONS[:keymap] = Getch::Guard.keymap(key)
34
25
  end
35
- opts.on("-d", "--disk DISK", "Disk where install Gentoo (sda,sdb), default use #{@disk}") do |disk|
36
- @disk = Getch::Guard.disk(disk)
26
+
27
+ opts.on("-d", "--disk DISK", "Root Disk where install the system (sda,sdb)") do |disk|
28
+ OPTIONS[:disk] = Getch::Guard.disk(disk)
37
29
  end
30
+
38
31
  opts.on("-f", "--format FS", "Can be ext4, lvm or zfs. Default use ext4") do |fs|
39
- @fs = Getch::Guard.format(fs)
40
- DEFAULT_OPTIONS[:fs] = fs # dont known why, but it should be enforce
32
+ OPTIONS[:fs] = Getch::Guard.format(fs)
41
33
  end
34
+
42
35
  opts.on("-u", "--username USERNAME", "Create a new user /home/USERNAME with password.") do |user|
43
- @username = user
36
+ OPTIONS[:username] = user
44
37
  end
45
- opts.on("--separate-boot DISK", "Disk for the boot/efi partition, default use #{@disk}") do |boot|
46
- @boot_disk = Getch::Guard.disk(boot)
47
- DEFAULT_OPTIONS[:boot_disk] = boot
38
+
39
+ opts.on("-o", "--os NAME", /gentoo|void/, "Instal distro NAME, can be gentoo or void.") do |name|
40
+ OPTIONS[:os] = name
48
41
  end
49
- opts.on("--separate-cache DISK", "Disk for the swap partition, add ZIL/L2ARC for ZFS when set, default use #{@disk}") do |swap|
50
- @cache_disk = Getch::Guard.disk(swap)
51
- DEFAULT_OPTIONS[:cache_disk] = swap
42
+
43
+ opts.on("--separate-boot DISK", "Use a different DISK for the /boot or /efi partition.") do |boot|
44
+ OPTIONS[:boot_disk] = Getch::Guard.disk(boot)
52
45
  end
53
- opts.on("--separate-home DISK", "Disk for the /home partition, default is nil") do |home|
54
- @home_disk = Getch::Guard.disk(home)
55
- DEFAULT_OPTIONS[:home_disk] = home
46
+
47
+ opts.on("--separate-cache DISK", "Use a different DISK for the swap partition, add ZIL/L2ARC for ZFS when set.") do |swap|
48
+ OPTIONS[:cache_disk] = Getch::Guard.disk(swap)
49
+ end
50
+
51
+ opts.on("--separate-home DISK", "Use a different DISK for the /home partition.") do |home|
52
+ OPTIONS[:home_disk] = Getch::Guard.disk(home)
56
53
  end
57
- opts.on("--encrypt", "Encrypt your system.") do
58
- @encrypt = true
54
+
55
+ opts.on("--encrypt", "Encrypt your system, use LUKS or native encryption for ZFS.") do
56
+ OPTIONS[:encrypt] = true
59
57
  end
58
+
60
59
  opts.on("--verbose", "Write more messages to the standard output.") do
61
- @verbose = true
60
+ OPTIONS[:verbose] = true
62
61
  end
62
+
63
63
  opts.on("-h", "--help", "Display this") do
64
64
  puts opts
65
65
  exit
66
66
  end
67
- end.parse!(into: DEFAULT_OPTIONS)
67
+
68
+ begin
69
+ opts.parse!(argv)
70
+ rescue OptionParser::ParseError => e
71
+ STDERR.puts e.message, "\n", opts
72
+ exit 1
73
+ end
74
+ end
68
75
  end
69
76
  end
70
77
  end