class Lolcommits::PluginManager
Constants
- GEM_NAME_PREFIX
Attributes
plugins[R]
Public Class Methods
init()
click to toggle source
# File lib/lolcommits/plugin_manager.rb, line 7 def self.init pm = new pm.load_plugins pm end
new()
click to toggle source
# File lib/lolcommits/plugin_manager.rb, line 15 def initialize @plugins = [] end
Public Instance Methods
enabled_plugins_for(runner)
click to toggle source
# File lib/lolcommits/plugin_manager.rb, line 34 def enabled_plugins_for(runner) @plugins.map do |gem_plugin| plugin = gem_plugin.plugin_instance(runner) plugin.enabled? ? plugin : nil end.compact end
find_by_name(name)
click to toggle source
@return [Lolcommits::Plugin] finds the first plugin matching name
# File lib/lolcommits/plugin_manager.rb, line 26 def find_by_name(name) @plugins.find { |plugin| plugin.name =~ /^#{name}/ } unless name.empty? end
load_plugins()
click to toggle source
find and require all plugins
# File lib/lolcommits/plugin_manager.rb, line 20 def load_plugins find_plugins @plugins.map(&:activate!) end
plugin_names()
click to toggle source
# File lib/lolcommits/plugin_manager.rb, line 30 def plugin_names @plugins.map(&:name).sort end
Private Instance Methods
find_gems()
click to toggle source
@return [Array] find all installed gems matching GEM_NAME_PREFIX
# File lib/lolcommits/plugin_manager.rb, line 55 def find_gems gem_list.select { |gem| gem.name =~ GEM_NAME_PREFIX } end
find_plugins()
click to toggle source
@return [Array] find all installed and supported plugins, populate
@plugins array and return it
# File lib/lolcommits/plugin_manager.rb, line 45 def find_plugins find_gems.map do |gem| plugin = GemPlugin.new(gem) @plugins << plugin if plugin.supported? && !plugin_located?(plugin) end @plugins end
gem_list()
click to toggle source
# File lib/lolcommits/plugin_manager.rb, line 63 def gem_list Gem.refresh Gem::Specification.respond_to?(:each) ? Gem::Specification : Gem.source_index.find_name('') end
plugin_located?(plugin)
click to toggle source
# File lib/lolcommits/plugin_manager.rb, line 59 def plugin_located?(plugin) @plugins.any? { |existing| existing.gem_name == plugin.gem_name } end