In Files

  • bundler/plugin/index.rb

Class/Module Index [+]

Quicksearch

Bundler::Plugin::Index

Attributes

commands[R]

Public Class Methods

new() click to toggle source
 
               # 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
            

Public Instance Methods

command_plugin(command) click to toggle source

Fetch the name of plugin handling the command

 
               # File bundler/plugin/index.rb, line 106
def command_plugin(command)
  @commands[command]
end
            
global_index_file() click to toggle source

Path where the global index file is stored

 
               # File bundler/plugin/index.rb, line 88
def global_index_file
  Plugin.global_root.join("index")
end
            
hook_plugins(event) click to toggle source

Returns the list of plugin names handling the passed event

 
               # File bundler/plugin/index.rb, line 131
def hook_plugins(event)
  @hooks[event] || []
end
            
index_file() click to toggle source

Path of default index file

 
               # File bundler/plugin/index.rb, line 83
def index_file
  Plugin.root.join("index")
end
            
installed?(name) click to toggle source
 
               # File bundler/plugin/index.rb, line 110
def installed?(name)
  @plugin_paths[name]
end
            
installed_plugins() click to toggle source
 
               # File bundler/plugin/index.rb, line 114
def installed_plugins
  @plugin_paths.keys
end
            
load_paths(name) click to toggle source
 
               # File bundler/plugin/index.rb, line 101
def load_paths(name)
  @load_paths[name]
end
            
local_index_file() click to toggle source

Path where the local index file is stored

 
               # File bundler/plugin/index.rb, line 93
def local_index_file
  Plugin.local_root.join("index")
end
            
plugin_commands(plugin) click to toggle source
 
               # File bundler/plugin/index.rb, line 118
def plugin_commands(plugin)
  @commands.find_all {|_, n| n == plugin }.map(&:first)
end
            
plugin_path(name) click to toggle source
 
               # File bundler/plugin/index.rb, line 97
def plugin_path(name)
  Pathname.new @plugin_paths[name]
end
            
register_plugin(name, path, load_paths, commands, sources, hooks) click to toggle source

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
            
source?(source) click to toggle source
 
               # File bundler/plugin/index.rb, line 122
def source?(source)
  @sources.key? source
end
            
source_plugin(name) click to toggle source
 
               # File bundler/plugin/index.rb, line 126
def source_plugin(name)
  @sources[name]
end
            
unregister_plugin(name) click to toggle source
 
               # 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 {|_, plugin_names| plugin_names.delete(name) }
  @plugin_paths.delete(name)
  @load_paths.delete(name)
  save_index
end