# File bundler/plugin/index.rb, line 24
def initialize
@plugin_paths = {}
@commands = {}
@sources = {}
@hooks = {}
@load_paths = {}
begin
load_index(global_index_file, true)
rescue GenericSystemCallError
# no need to fail when on a read-only FS, for example
nil
end
load_index(local_index_file) if SharedHelpers.in_bundle?
end
Fetch the name of plugin handling the command
# File bundler/plugin/index.rb, line 109
def command_plugin(command)
@commands[command]
end
Path where the global index file is stored
# File bundler/plugin/index.rb, line 91
def global_index_file
Plugin.global_root.join("index")
end
Returns the list of plugin names handling the passed event
# File bundler/plugin/index.rb, line 134
def hook_plugins(event)
@hooks[event] || []
end
Path of default index file
# File bundler/plugin/index.rb, line 86
def index_file
Plugin.root.join("index")
end
# File bundler/plugin/index.rb, line 113
def installed?(name)
@plugin_paths[name]
end
# File bundler/plugin/index.rb, line 117
def installed_plugins
@plugin_paths.keys
end
# File bundler/plugin/index.rb, line 104
def load_paths(name)
@load_paths[name]
end
Path where the local index file is stored
# File bundler/plugin/index.rb, line 96
def local_index_file
Plugin.local_root.join("index")
end
# File bundler/plugin/index.rb, line 121
def plugin_commands(plugin)
@commands.find_all {|_, n| n == plugin }.map(&:first)
end
# File bundler/plugin/index.rb, line 100
def plugin_path(name)
Pathname.new @plugin_paths[name]
end
This function is to be called when a new plugin is installed. This function shall add the functions of the plugin to existing maps and also the name to source location.
@param [String] name of the plugin to be registered @param [String] path where the plugin is installed @param [Array<String>] #load_paths for the plugin @param [Array<String>] commands that are handled by the plugin @param [Array<String>] sources that are handled by the plugin
# File bundler/plugin/index.rb, line 49
def register_plugin(name, path, load_paths, commands, sources, hooks)
old_commands = @commands.dup
common = commands & @commands.keys
raise CommandConflict.new(name, common) unless common.empty?
commands.each {|c| @commands[c] = name }
common = sources & @sources.keys
raise SourceConflict.new(name, common) unless common.empty?
sources.each {|k| @sources[k] = name }
hooks.each do |event|
event_hooks = (@hooks[event] ||= []) << name
event_hooks.uniq!
end
@plugin_paths[name] = path
@load_paths[name] = load_paths
save_index
rescue StandardError
@commands = old_commands
raise
end
# File bundler/plugin/index.rb, line 125
def source?(source)
@sources.key? source
end
# File bundler/plugin/index.rb, line 129
def source_plugin(name)
@sources[name]
end
# File bundler/plugin/index.rb, line 73
def unregister_plugin(name)
@commands.delete_if {|_, v| v == name }
@sources.delete_if {|_, v| v == name }
@hooks.each do |hook, names|
names.delete(name)
@hooks.delete(hook) if names.empty?
end
@plugin_paths.delete(name)
@load_paths.delete(name)
save_index
end