# File lib/boxgrinder-build/managers/plugin-manager.rb, line 36 def initialize @plugins = {:delivery => {}, :os => {}, :platform => {}} end
# File lib/boxgrinder-build/managers/plugin-manager.rb, line 64 def initialize_plugin(type, name) plugins = @plugins[type] # this should never happen raise "There are no #{type} plugins." if plugins.nil? plugin_info = plugins[name] raise "There is no #{type} plugin registered for '#{name}' type/name." if plugin_info.nil? begin plugin = plugin_info[:class].new rescue raise "Error while initializing '#{plugin_info[:class].to_s}' plugin." end [plugin, plugin_info] end
# File lib/boxgrinder-build/managers/plugin-manager.rb, line 40 def register_plugin(clazz, info) info = {:class => clazz, :require_root => false}.merge(info) validate_plugin_info(info) raise "We already have registered plugin for #{info[:name]}." unless @plugins[info[:name]].nil? unless info[:types].nil? info[:types].each do |type| @plugins[info[:type]][type] = info end else @plugins[info[:type]][info[:name]] = info end self end
# File lib/boxgrinder-build/managers/plugin-manager.rb, line 58 def validate_plugin_info(info) raise "No name specified for your plugin" if info[:name].nil? raise "No class specified for your plugin" if info[:class].nil? raise "No type specified for your plugin" if info[:type].nil? end