class Ragent::Plugins
Public Class Methods
new(ragent)
click to toggle source
# File lib/ragent/plugins.rb, line 7 def initialize(ragent) @ragent = ragent @logger = ragent.logger @plugins = {} @running_plugins = [] end
Public Instance Methods
load(name, *args, &block)
click to toggle source
# File lib/ragent/plugins.rb, line 14 def load(name, *args, &block) info "loading plugin #{name}" require "ragent/plugin/#{name}" raise "plugin #{name} didn't register" unless @plugins[name.to_s] info "loaded plugin #{name}" # TODO: load and configure dependencies plugin = @plugins[name.to_s] info "Configure: #{name}" running_plugin = plugin.new(@ragent,plugin_name: name) running_plugin.configure(*args, &block) debug "Configured: #{name}" @running_plugins << running_plugin end
register(mod)
click to toggle source
# File lib/ragent/plugins.rb, line 28 def register(mod) @plugins[mod.plugin_name] = mod end
start()
click to toggle source
# File lib/ragent/plugins.rb, line 32 def start @running_plugins.each do |plugin| info "Starting: #{plugin.plugin_name}" plugin.start debug "Started: #{plugin.plugin_name}" end end
stop()
click to toggle source
# File lib/ragent/plugins.rb, line 40 def stop @running_plugins.each do |plugin| info "Stopping: #{plugin.plugin_name}" plugin.stop debug "Stopped: #{plugin.plugin_name}" end end
Private Instance Methods
plugins_list_command(_options)
click to toggle source
# File lib/ragent/plugins.rb, line 59 def plugins_list_command(_options) @plugins.values.map(&:name).join("\n") end
register_commands()
click to toggle source
# File lib/ragent/plugins.rb, line 50 def register_commands # stop cmd = Ragent::Command.new(main: 'plugins', sub: 'list', recipient: self, method: :plugins_list_command) @ragent.commands.add(cmd) end