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