mirror of
https://github.com/hashicorp/vagrant.git
synced 2026-06-03 22:05:01 -04:00
Remove customized require behaviors and modify the bin executable to check for missing tools that Vagrant expects to exist when running outside of an installer.
52 lines
1.8 KiB
Ruby
52 lines
1.8 KiB
Ruby
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
require "pathname"
|
|
require "vagrant/util/caps"
|
|
|
|
module VagrantPlugins
|
|
module HostLinux
|
|
module Cap
|
|
class FsISO
|
|
extend Vagrant::Util::Caps::BuildISO
|
|
|
|
@@logger = Log4r::Logger.new("vagrant::host::linux::fs_iso")
|
|
|
|
BUILD_ISO_CMD = "mkisofs".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, "-joliet"]
|
|
iso_command.concat(["-volid", 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
|