Sha256: a972f12ebe317dbebb8bcb52d327b4532862ccb6fad0aef68deeaaf02e128b03

Contents?: true

Size: 1.87 KB

Versions: 4

Compression:

Stored size: 1.87 KB

Contents

module Getch
  module FileSystem
    class Partition
      def initialize
        @log = Getch::Log.new
      end

      def gpt(dev)
        return if ! dev
        disk = disk_name(dev)
        part = dev.match(/[0-9]/)
        exec("sgdisk -n#{part}:1MiB:+1MiB -t#{part}:EF02 #{disk}")
      end

      def boot(dev)
        return if ! dev
        disk = disk_name(dev)
        part = dev.match(/[0-9]/)
        if DEFAULT_OPTIONS[:fs] == "zfs"
          exec("sgdisk -n#{part}:0:+2G -t#{part}:BE00 #{disk}")
        else
          exec("sgdisk -n#{part}:0:+128MiB -t#{part}:8300 #{disk}")
        end
      end

      def efi(dev)
        return if ! dev
        disk = disk_name(dev)
        part = dev.match(/[0-9]/)
        exec("sgdisk -n#{part}:1M:+260M -t#{part}:EF00 #{disk}")
      end

      def swap(dev)
        return if ! dev
        disk = disk_name(dev)
        part = dev.match(/[0-9]/)
        if DEFAULT_OPTIONS[:cache_disk]
          exec("sgdisk -n#{part}:0:0 -t#{part}:8200 #{disk}")
        else
          mem=`awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
          exec("sgdisk -n#{part}:0:+#{mem} -t#{part}:8200 #{disk}")
        end
      end

      def root(dev, code)
        return if ! dev
        disk = disk_name(dev)
        part = dev.match(/[0-9]/)
        exec("sgdisk -n#{part}:0:0 -t#{part}:#{code} #{disk}")
      end

      def home(dev, code)
        return if ! dev
        disk = disk_name(dev)
        part = dev.match(/[0-9]/)
        if DEFAULT_OPTIONS[:home_disk]
          exec("sgdisk -n#{part}:0:0 -t#{part}:#{code} #{disk}")
        end
      end

      private

      def disk_name(dev)
        dev.match(/[^0-9]+/)
      end

      def exec(cmd)
        @log.debug "Partition disk with #{cmd}"
        if DEFAULT_OPTIONS[:encrypt]
          Helpers::sys(cmd)
        else
          Getch::Command.new(cmd).run!
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
getch-0.1.5 lib/getch/filesystem/partition.rb
getch-0.1.3 lib/getch/filesystem/partition.rb
getch-0.1.2 lib/getch/filesystem/partition.rb
getch-0.1.1 lib/getch/filesystem/partition.rb