class Derelict::Plugin::Manager
A class that handles managing plugins for a Vagrant instance
Attributes
instance[R]
Public Class Methods
new(instance)
click to toggle source
Initializes a Manager
for use with a particular instance
* instance: The Derelict::Instance which will have its plugins managed by this Manager
# File lib/derelict/plugin/manager.rb, line 17 def initialize(instance) @instance = instance logger.debug "Successfully initialized #{description}" end
Public Instance Methods
description()
click to toggle source
Provides a description of this Connection
Mainly used for log messages.
# File lib/derelict/plugin/manager.rb, line 102 def description "Derelict::Plugin::Manager for #{instance.description}" end
fetch(plugin_name)
click to toggle source
Retrieves a plugin with a particular name
* plugin_name: Name of the plugin to look for (as a string)
# File lib/derelict/plugin/manager.rb, line 93 def fetch(plugin_name) list.find {|plugin| plugin.name == plugin_name}.tap do |plugin| raise Plugin::NotFound.new plugin_name if plugin.nil? end end
install(plugin_name, options = {})
click to toggle source
Installs a plugin (optionally a particular version)
If no version is specified, the latest stable version is used by Vagrant.
* plugin_name: Name of the plugin to install (as a string) * options: Hash of options, valid keys: * version: Particular version to install (optional, latest version will be installed if omitted) * log: Whether to log the output (optional, defaults to false)
# File lib/derelict/plugin/manager.rb, line 50 def install(plugin_name, options = {}) options = {:log => false, :version => nil}.merge(options) logger.info "Installing plugin '#{plugin_name}' using #{description}" version = options[:version] command = [:plugin, "install", plugin_name] command.concat ["--plugin-version", version] unless version.nil? log_block = options[:log] ? shell_log_block : nil instance.execute!(*command, &log_block).tap do flush_cache # flush memoized method return values end end
installed?(plugin_name, version = nil)
click to toggle source
Determines whether a particular plugin is installed
* plugin_name: Name of the plugin to look for (as a string)
# File lib/derelict/plugin/manager.rb, line 33 def installed?(plugin_name, version = nil) fetch(plugin_name).version == version or version.nil? rescue Plugin::NotFound false end
list()
click to toggle source
Retrieves the Set of currently installed plugins
# File lib/derelict/plugin/manager.rb, line 23 def list logger.info "Retrieving Vagrant plugin list for #{description}" output = instance.execute!(:plugin, "list").stdout Derelict::Parser::PluginList.new(output).plugins end
uninstall(plugin_name, options = {})
click to toggle source
Uninstalls a particular Vagrant plugin
* plugin_name: Name of the plugin to uninstall (as a string)
# File lib/derelict/plugin/manager.rb, line 67 def uninstall(plugin_name, options = {}) options = {:log => false}.merge(options) logger.info "Uninstalling plugin '#{plugin_name}' using #{description}" log_block = options[:log] ? shell_log_block : nil instance.execute!(:plugin, "uninstall", plugin_name, &log_block).tap do flush_cache # flush memoized method return values end end
update(plugin_name, options = {})
click to toggle source
Updates a particular Vagrant plugin
* plugin_name: Name of the plugin to update (as a string)
# File lib/derelict/plugin/manager.rb, line 80 def update(plugin_name, options = {}) options = {:log => false}.merge(options) logger.info "Updating plugin '#{plugin_name}' using #{description}" log_block = options[:log] ? shell_log_block : nil instance.execute!(:plugin, "update", plugin_name, &log_block).tap do flush_cache # flush memoized method return values end end