getch 0.1.5 → 0.1.6

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