Make plugin loading/reloading case-insensitive.

Since load/reload was the only place where case mattered for plugins, and it tripped up
a lot of new users, this should be a nice bit of usability improvement.
This commit is contained in:
Daniel Folkinshteyn 2010-08-11 00:43:05 -04:00
parent 808cb2c9f4
commit 29837e94b1

View File

@ -32,6 +32,7 @@ import sys
import imp
import os.path
import linecache
import re
import supybot.log as log
import supybot.conf as conf
@ -55,6 +56,13 @@ def loadPluginModule(name, ignoreDeprecation=False):
except EnvironmentError: # OSError, IOError superclass.
log.warning('Invalid plugin directory: %s; removing.', dir)
conf.supybot.directories.plugins().remove(dir)
if name not in files:
matched_names = filter(lambda x: re.search(r'(?i)^%s$' % (name,), x),
files)
if len(matched_names) == 1:
name = matched_names[0]
else:
raise ImportError, name
moduleInfo = imp.find_module(name, pluginDirs)
try:
module = imp.load_module(name, *moduleInfo)