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 imp
import os.path import os.path
import linecache import linecache
import re
import supybot.log as log import supybot.log as log
import supybot.conf as conf import supybot.conf as conf
@ -55,6 +56,13 @@ def loadPluginModule(name, ignoreDeprecation=False):
except EnvironmentError: # OSError, IOError superclass. except EnvironmentError: # OSError, IOError superclass.
log.warning('Invalid plugin directory: %s; removing.', dir) log.warning('Invalid plugin directory: %s; removing.', dir)
conf.supybot.directories.plugins().remove(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) moduleInfo = imp.find_module(name, pluginDirs)
try: try:
module = imp.load_module(name, *moduleInfo) module = imp.load_module(name, *moduleInfo)