Sha256: 655e9856b4d515068804743547a5af03e59a922a3b9ee22f6aa9076ed66b885a
Contents?: true
Size: 1.14 KB
Versions: 1
Compression:
Stored size: 1.14 KB
Contents
module Lolcommits class PluginManager GEM_NAME_PREFIX = /^lolcommits-plugin-/ def initialize @plugins = [] end # @return [Array] find all installed and supported plugins, storing to # @plugins Array, and returns this array def locate_plugins gem_list.each do |gem| next if gem.name !~ GEM_NAME_PREFIX plugin_name = gem.name.split('-', 2).last plugin = GemPlugin.new(plugin_name, gem.name, gem) @plugins << plugin if plugin.supported? && !plugin_located?(plugin) end @plugins end # @return [Hash] A hash with all plugin names (minus the prefix) as # keys and Plugin objects as values def plugins h = {} @plugins.each do |plugin| h[plugin.name] = plugin end h end # require all plugins def load_plugins @plugins.map(&:activate!) end private def plugin_located?(plugin) @plugins.any? { |existing| existing.gem_name == plugin.gem_name } end def gem_list Gem.refresh Gem::Specification.respond_to?(:each) ? Gem::Specification : Gem.source_index.find_name('') end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lolcommits-0.9.3.pre1 | lib/lolcommits/plugin_manager.rb |