From b3c5f4953a0a1c5eca225ef33a58943a6c60f63a Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sat, 10 Mar 2007 12:55:33 +0000 Subject: Allow customization of the plugins load path --- lib/rbot/ircbot.rb | 23 +++++++++++++++++++---- lib/rbot/plugins.rb | 5 +++++ 2 files changed, 24 insertions(+), 4 deletions(-) (limited to 'lib/rbot') diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb index 7c0af845..aee426b3 100644 --- a/lib/rbot/ircbot.rb +++ b/lib/rbot/ircbot.rb @@ -242,6 +242,12 @@ class Bot :validate => Proc.new { |v| v > 0 }, :desc => "Maximum console messages logfile size (in megabytes)") + BotConfig.register BotConfigArrayValue.new('plugins.path', + :wizard => true, :default => ['(default)', '(default)/contrib'], + :requires_restart => false, + :on_change => Proc.new { |bot, v| bot.setup_plugins_path }, + :desc => "Where the bot should look for plugin. List multiple directories using commas to separate. Use '(default)' for default prepackaged plugins collection, '(default)/contrib' for prepackaged unsupported plugins collection") + BotConfig.register BotConfigEnumValue.new('send.newlines', :values => ['split', 'join'], :default => 'split', :on_change => Proc.new { |bot, v| @@ -433,10 +439,7 @@ class Bot Dir.mkdir("#{botclass}/plugins") unless File.exist?("#{botclass}/plugins") @plugins = Plugins::pluginmanager @plugins.bot_associate(self) - @plugins.add_botmodule_dir(Config::coredir + "/utils") - @plugins.add_botmodule_dir(Config::coredir) - @plugins.add_botmodule_dir("#{botclass}/plugins") - @plugins.add_botmodule_dir(Config::datadir + "/plugins") + setup_plugins_path() @plugins.scan Utils.set_safe_save_dir("#{botclass}/safe_save") @@ -631,6 +634,18 @@ class Bot :truncate_text => @config['send.truncate_text'].dup end + def setup_plugins_path + @plugins.clear_botmodule_dirs + @plugins.add_botmodule_dir(Config::coredir + "/utils") + @plugins.add_botmodule_dir(Config::coredir) + @plugins.add_botmodule_dir("#{botclass}/plugins") + + @config['plugins.path'].each do |_| + path = _.sub(/^\(default\)/, Config::datadir + '/plugins') + @plugins.add_botmodule_dir(path) + end + end + def set_default_send_options(opts={}) # Default send options for NOTICE and PRIVMSG unless defined? @default_send_options diff --git a/lib/rbot/plugins.rb b/lib/rbot/plugins.rb index e101e627..d29d21c1 100644 --- a/lib/rbot/plugins.rb +++ b/lib/rbot/plugins.rb @@ -390,6 +390,11 @@ module Plugins debug "Botmodule loading path: #{@dirs.join(', ')}" end + def clear_botmodule_dirs + @dirs.clear + debug "Botmodule loading path cleared" + end + # load plugins from pre-assigned list of directories def scan @failed.clear -- cgit v1.2.3