diff --git a/modules/man.py b/modules/man.py index 5e7dc74..00edc8e 100644 --- a/modules/man.py +++ b/modules/man.py @@ -2,12 +2,14 @@ import subprocess import re +import os nemubotversion = 3.3 def load(context): from hooks import Hook - add_hook("cmd_hook", Hook(cmd_man, "man")) + add_hook("cmd_hook", Hook(cmd_man, "MAN")) + add_hook("cmd_hook", Hook(cmd_whatis, "man")) def help_tiny (): """Line inserted in the response to the command !help""" @@ -31,6 +33,7 @@ def cmd_man(msg): except ValueError: args.append(msg.cmds[1]) + os.unsetenv("LANG") res = Response(msg.sender, channel=msg.channel) with subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as proc: for line in proc.stdout.read().split(b"\n"): @@ -44,3 +47,20 @@ def cmd_man(msg): res.append_message("Il n'y a pas de page de manuel pour %s." % msg.cmds[1]) return res + +def cmd_whatis(msg): + args = ["whatis", " ".join(msg.cmds[1:])] + + res = Response(msg.sender, channel=msg.channel) + with subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as proc: + for line in proc.stdout.read().split(b"\n"): + (line, n) = RGXP_s.subn(b'', line) + res.append_message(" ".join(line.decode().split())) + + if len(res.messages) <= 0: + if num is not None: + res.append_message("Il n'y a pas d'entrée %s dans la section %d du manuel." % (msg.cmds[1], num)) + else: + res.append_message("Il n'y a pas de page de manuel pour %s." % msg.cmds[1]) + + return res