54 lines
1.7 KiB
Ruby
54 lines
1.7 KiB
Ruby
|
require "fileutils"
|
||
|
require "pathname"
|
||
|
require "rubygems"
|
||
|
require "set"
|
||
|
|
||
|
require "log4r"
|
||
|
|
||
|
module VagrantPlugins
|
||
|
module CommandPlugin
|
||
|
module Action
|
||
|
# This middleware licenses a plugin by copying the license file to
|
||
|
# the proper place.
|
||
|
class LicensePlugin
|
||
|
def initialize(app, env)
|
||
|
@app = app
|
||
|
@logger = Log4r::Logger.new("vagrant::plugins::plugincommand::license")
|
||
|
end
|
||
|
|
||
|
def call(env)
|
||
|
# Get the list of installed plugins according to the state file
|
||
|
installed = Set.new(env[:plugin_state_file].installed_plugins)
|
||
|
|
||
|
# If the plugin we're trying to license doesn't exist in the
|
||
|
# state file, then it is an error.
|
||
|
if !installed.include?(env[:plugin_name])
|
||
|
raise Vagrant::Errors::PluginNotFound, :name => env[:plugin_name]
|
||
|
end
|
||
|
|
||
|
# Verify the license file exists
|
||
|
license_file = Pathname.new(env[:plugin_license_path])
|
||
|
if !license_file.file?
|
||
|
raise Vagrant::Errors::PluginInstallLicenseNotFound,
|
||
|
:name => env[:plugin_name],
|
||
|
:path => license_file.to_s
|
||
|
end
|
||
|
|
||
|
# Copy it in.
|
||
|
final_path = env[:home_path].join("license-#{env[:plugin_name]}.lic")
|
||
|
@logger.info("Copying license from: #{license_file}")
|
||
|
@logger.info("Copying license to: #{final_path}")
|
||
|
env[:ui].info(I18n.t("vagrant.commands.plugin.installing_license",
|
||
|
:name => env[:plugin_name]))
|
||
|
FileUtils.cp(license_file, final_path)
|
||
|
|
||
|
# Installed!
|
||
|
env[:ui].success(I18n.t("vagrant.commands.plugin.installed_license"))
|
||
|
|
||
|
@app.call(env)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|