Sha256: c155cc54b5f118669de534e3b1890e786f529b74da3a6d7d5c6427d65e136a7b

Contents?: true

Size: 1.31 KB

Versions: 11

Compression:

Stored size: 1.31 KB

Contents

module LinuxAdmin
  module Mountable
    attr_accessor :fs_type
    attr_accessor :mount_point

    module ClassMethods
      def mount_point_exists?(mount_point)
        result = Common.run!(Common.cmd(:mount))
        result.output.split("\n").any? { |line| line.split[2] == mount_point.to_s }
      end

      def mount_point_available?(mount_point)
        !mount_point_exists?(mount_point)
      end
    end

    def self.included(base)
      base.extend(ClassMethods)
    end

    def discover_mount_point
      result = Common.run!(Common.cmd(:mount))
      mount_line = result.output.split("\n").find { |line| line.split[0] == path }
      @mount_point = mount_line.split[2] if mount_line
    end

    def format_to(filesystem)
      Common.run!(Common.cmd(:mke2fs),
                  :params => {'-t' => filesystem, nil => path})
      @fs_type = filesystem
    end

    def mount(mount_point)
      FileUtils.mkdir(mount_point) unless File.directory?(mount_point)

      if self.class.mount_point_exists?(mount_point)
        raise ArgumentError, "disk already mounted at #{mount_point}"
      end

      Common.run!(Common.cmd(:mount), :params => {nil => [path, mount_point]})
      @mount_point = mount_point
    end

    def umount
      Common.run!(Common.cmd(:umount), :params => {nil => [@mount_point]})
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
linux_admin-4.0.0 lib/linux_admin/mountable.rb
linux_admin-3.0.0 lib/linux_admin/mountable.rb
linux_admin-2.0.2 lib/linux_admin/mountable.rb
linux_admin-2.0.1 lib/linux_admin/mountable.rb
linux_admin-2.0.0 lib/linux_admin/mountable.rb
linux_admin-1.2.4 lib/linux_admin/mountable.rb
linux_admin-1.2.3 lib/linux_admin/mountable.rb
linux_admin-1.2.2 lib/linux_admin/mountable.rb
linux_admin-1.2.1 lib/linux_admin/mountable.rb
linux_admin-1.2.0 lib/linux_admin/mountable.rb
linux_admin-1.1.0 lib/linux_admin/mountable.rb