From 3f638c7caec51c834b1703d8fe0415c5ea786224 Mon Sep 17 00:00:00 2001 From: Tom Gilbert Date: Wed, 10 Aug 2005 23:04:16 +0000 Subject: 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 --- lib/rbot/plugins.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib') 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") -- cgit v1.2.3