2013-02-04 18:22:15 +00:00
|
|
|
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
|
2013-12-04 21:23:03 +00:00
|
|
|
installed = env[:plugin_state_file].installed_plugins.keys
|
2013-02-04 18:22:15 +00:00
|
|
|
|
|
|
|
# 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!
|
2013-02-04 18:43:35 +00:00
|
|
|
env[:ui].success(I18n.t("vagrant.commands.plugin.installed_license",
|
|
|
|
:name => env[:plugin_name]))
|
2013-02-04 18:22:15 +00:00
|
|
|
|
|
|
|
@app.call(env)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|