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