]> jfr.im git - erebus.git/blobdiff - modules/help.py
help - add genhelp params - fixes #16
[erebus.git] / modules / help.py
index fbe31f4416bb153b1d5c0c10f6c77fd2a76c7ff0..916c839d4245bcbd0b3d3b34b88186c2221f0819 100644 (file)
@@ -94,29 +94,45 @@ def _mkhelp(level, func):
        return lines
 
 def _genhelp(bot, user, chan, realtarget, *args):
-       try:
-               filepath = bot.parent.cfg.get('help', 'path', default='./help/%d.txt')
-               for level in range(-1, 101):
+       module = None
+       minlevel = -1
+       maxlevel = 100
+       filepath = bot.parent.cfg.get('help', 'path', default='./help/%d.txt')
+       for arg in args:
+               if arg[0] == "@":
+                       module = arg[1:]
+               elif arg[0] == "#" and user.glevel >= lib.OWNER:
+                       minlevel = maxlevel = int(arg[1:])
+               else:
+                       filepath = arg
+                       if minlevel != maxlevel:
+                               minlevel = maxlevel
+       print "%r %r %r %r" % (module, minlevel, maxlevel, filepath)
+       for level in range(minlevel, maxlevel+1):
+               if '%d' in filepath:
                        filename = filepath % (level)
-                       fo = open(filename, 'w')
-                       lines = []
-                       for func in helps.itervalues():
-                               lines += _mkhelp(level, func)
-                       for line in sorted(lines):
-                               fo.write(str(line)+"\n")
-       except Exception as e:
-               return e
+               else:
+                       filename = filepath
+               fo = open(filename, 'w')
+               lines = []
+               for func in helps.itervalues():
+                       if module is not None and func.module != module:
+                                       continue
+                       lines += _mkhelp(level, func)
+               for line in sorted(lines):
+                       fo.write(str(line)+"\n")
+               fo.close()
        return True
 
 @lib.hook(glevel=1, needchan=False)
 @lib.help(None, "generates help file", "default path: ./help/<level>.txt", "config as: [help]", "path = ./help/%d.txt")
-#TODO: use args... "[@<module>] [#<level>] [<file>]"
 def genhelp(bot, user, chan, realtarget, *args):
-       ret = _genhelp(bot, user, chan, realtarget, *args)
-       if not isinstance(ret, BaseException):
-               bot.msg(user, "Help written.")
-       else:
-               bot.msg(user, "Failed writing help. %s" % (ret))
+       try:
+               _genhelp(bot, user, chan, realtarget, *args)
+       except Exception as e:
+               bot.msg(user, "Failed writing help. %s" % (e))
+               return
+       bot.msg(user, "Help written.")
 
 @lib.hook(needchan=False)
 @lib.help("<command>", "describes a command")
@@ -138,7 +154,10 @@ def help(bot, user, chan, realtarget, *args):
 @lib.help(None, "provides command list")
 def showcommands(bot, user, chan, realtarget, *args):
        if bool(int(bot.parent.cfg.get('help', 'autogen', default=0))):
-               _genhelp(bot, user, chan, realtarget, *args)
+               try:
+                       _genhelp(bot, user, chan, realtarget, *args)
+               except: pass
+
        url = bot.parent.cfg.get('help', 'url', default=None)
        if url is None:
                try: