Class: Lolcommits::PluginManager

Inherits:
Object
  • Object
show all
Defined in:
lib/lolcommits/plugin_manager.rb

Constant Summary collapse

GEM_NAME_PREFIX =
/^lolcommits-/

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePluginManager

Returns a new instance of PluginManager.



11
12
13
# File 'lib/lolcommits/plugin_manager.rb', line 11

def initialize
  @plugins = []
end

Class Method Details

.initObject



5
6
7
8
9
# File 'lib/lolcommits/plugin_manager.rb', line 5

def self.init
  pm = new
  pm.load_plugins
  pm
end

Instance Method Details

#find_by_name(name) ⇒ Lolcommits::Plugin

Returns find first plugin matching name.

Returns:



26
27
28
# File 'lib/lolcommits/plugin_manager.rb', line 26

def find_by_name(name)
  plugin_klasses.find { |plugin| plugin.name =~ /^#{name}/ }
end

#load_pluginsObject

find and require all plugins



16
17
18
19
# File 'lib/lolcommits/plugin_manager.rb', line 16

def load_plugins
  find_plugins
  @plugins.map(&:activate!)
end

#plugin_namesObject



30
31
32
33
34
# File 'lib/lolcommits/plugin_manager.rb', line 30

def plugin_names
  # TODO: when all plugins are gems, get names from GemPlugin with
  #   @plugins.map(&:name)
  plugin_klasses.map(&:name).sort
end

#plugins_for(position) ⇒ Object



21
22
23
# File 'lib/lolcommits/plugin_manager.rb', line 21

def plugins_for(position)
  plugin_klasses.select { |p| Array(p.runner_order).include?(position) }
end