summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Gilbert <tom@linuxbrit.co.uk>2005-08-10 23:04:16 +0000
committerTom Gilbert <tom@linuxbrit.co.uk>2005-08-10 23:04:16 +0000
commit3f638c7caec51c834b1703d8fe0415c5ea786224 (patch)
tree11333aa3e243e5db36787b8ecc75608bbc59cb92
parent0ee075cd1ea745e0a96e4f12476e554714619a31 (diff)
patch from Alexey Froloff:
Do not try to load same plugin from different locations. Added ability to disable system-wide plugins - create PLUGIN.rb.disabled in user's plugins directory. For example, to disable freshmeat plugin installed in /usr/share/rbot/plugins/freshmeat.rb one can create empty file ~/.rbot/plugins/freshmeat.rb.disabled
-rw-r--r--lib/rbot/plugins.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/rbot/plugins.rb b/lib/rbot/plugins.rb
index bffba227..893bb414 100644
--- a/lib/rbot/plugins.rb
+++ b/lib/rbot/plugins.rb
@@ -173,14 +173,20 @@ module Plugins
# load plugins from pre-assigned list of directories
def scan
+ processed = Array.new
dirs = Array.new
dirs << Config::datadir + "/plugins"
dirs += @dirs
- dirs.each {|dir|
+ dirs.reverse.each {|dir|
if(FileTest.directory?(dir))
d = Dir.new(dir)
d.sort.each {|file|
next if(file =~ /^\./)
+ next if(processed.include?(file))
+ if(file =~ /^(.+\.rb)\.disabled$/)
+ processed << $1
+ next
+ end
next unless(file =~ /\.rb$/)
tmpfilename = "#{dir}/#{file}"
@@ -193,6 +199,7 @@ module Plugins
plugin_string = IO.readlines(tmpfilename).join("")
debug "loading plugin #{tmpfilename}"
plugin_module.module_eval(plugin_string)
+ processed << file
rescue TimeoutError, StandardError, NameError, LoadError, SyntaxError => err
puts "warning: plugin #{tmpfilename} load failed: " + err
puts err.backtrace.join("\n")