Sha256: 2d585195604feb3cd29d089dacb1b87d3772521bb2e1a12fdd44cf437adba5c2

Contents?: true

Size: 1.82 KB

Versions: 10

Compression:

Stored size: 1.82 KB

Contents

require "pathname"
require "vagrant/util/caps"

module VagrantPlugins
  module HostDarwin
    module Cap
      class FsISO
        extend Vagrant::Util::Caps::BuildISO
        
        @@logger = Log4r::Logger.new("vagrant::host::darwin::fs_iso")

        BUILD_ISO_CMD = "hdiutil".freeze

        # Check that the host has the ability to generate ISOs
        #
        # @param [Vagrant::Environment] env
        # @return [Boolean]
        def self.isofs_available(env)
          !!Vagrant::Util::Which.which(BUILD_ISO_CMD)
        end

        # Generate an ISO file of the given source directory
        #
        # @param [Vagrant::Environment] env
        # @param [String] source_directory Contents of ISO
        # @param [Map] extra arguments to pass to the iso building command
        #              :file_destination (string) location to store ISO
        #              :volume_id (String) to set the volume name 
        # @return [Pathname] ISO location
        # @note If file_destination exists, source_directory will be checked
        #       for recent modifications and a new ISO will be generated if requried.
        def self.create_iso(env, source_directory, extra_opts={})
          source_directory = Pathname.new(source_directory)
          file_destination = self.ensure_output_iso(extra_opts[:file_destination])

          iso_command = [BUILD_ISO_CMD, "makehybrid", "-hfs", "-iso", "-joliet", "-ov"]
          iso_command.concat(["-default-volume-name", extra_opts[:volume_id]]) if extra_opts[:volume_id]
          iso_command << "-o"
          iso_command << file_destination.to_s
          iso_command << source_directory.to_s
          self.build_iso(iso_command, source_directory, file_destination)

          @@logger.info("ISO available at #{file_destination}")
          file_destination
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 3 rubygems

Version Path
vagrant-unbundled-2.3.6.0 plugins/hosts/darwin/cap/fs_iso.rb
tamtam-vagrant-reload-1.2.1 vendor/cache/vagrant-2092df529ae7/plugins/hosts/darwin/cap/fs_iso.rb
vagrant-unbundled-2.3.3.0 plugins/hosts/darwin/cap/fs_iso.rb
vagrant-unbundled-2.3.2.0 plugins/hosts/darwin/cap/fs_iso.rb
vagrant-unbundled-2.2.19.0 plugins/hosts/darwin/cap/fs_iso.rb
vagrant-unbundled-2.2.18.0 plugins/hosts/darwin/cap/fs_iso.rb
vagrant-unbundled-2.2.16.0 plugins/hosts/darwin/cap/fs_iso.rb
vagrant-unbundled-2.2.14.0 plugins/hosts/darwin/cap/fs_iso.rb
vagrant-aws-mkubenka-0.7.2.pre.24 vendor/bundle/ruby/2.7.0/bundler/gems/vagrant-22795b161bf6/plugins/hosts/darwin/cap/fs_iso.rb
vagrant-unbundled-2.2.10.0 plugins/hosts/darwin/cap/fs_iso.rb