diff options
Diffstat (limited to 'kanotix-irc/skel/.weechat/python/autoload')
-rwxr-xr-x | kanotix-irc/skel/.weechat/python/autoload/executor.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/kanotix-irc/skel/.weechat/python/autoload/executor.py b/kanotix-irc/skel/.weechat/python/autoload/executor.py new file mode 100755 index 0000000..996e450 --- /dev/null +++ b/kanotix-irc/skel/.weechat/python/autoload/executor.py @@ -0,0 +1,96 @@ +import weechat, string, popen2 + +EX_NAME="Executor" +EX_VERSION="0.1" + +weechat.register (EX_NAME, EX_VERSION, "", "Execute system commands in Weechat") +weechat.add_command_handler("exec", "exmain") + +def exexec(cmd): + proc = popen2.Popen3(cmd, True) + status = proc.wait() + results = [] + if status == 0: + results = proc.fromchild.readlines() + else: + results = proc.childerr.readlines() + return status, results + +def excmdbuf(args): + status, results = exexec(string.join(args, " ")) + if status == 0: + weechat.prnt("-[" + EX_NAME + "]- command `" + string.join(args, " ") + "` sucessfully launched") + for line in results: + weechat.prnt(string.rstrip(line, '\n')) + else: + weechat.prnt("-[" + EX_NAME + "]- an error occured while running command `" + string.join(args, " ") + "`") + for line in results: + weechat.prnt(string.rstrip(line, '\n')) + +def excmdchan(args): + status, results = exexec(string.join(args, " ")) + if status == 0: + weechat.prnt("-[" + EX_NAME + "]- command `" + string.join(args, " ") + "` sucessfully launched") + for line in results: + weechat.command(string.rstrip(line, '\n')) + else: + weechat.prnt("-[" + EX_NAME + "]- an error occured while running command `" + string.join(args, " ") + "`") + for line in results: + weechat.prnt(string.rstrip(line, '\n')) + + +def exchdir(args): + newdir = "." + if args == []: + if os.environ.has_key('HOME'): + newdir = os.environ['HOME'] + else: + newdir = args[0] + try: + os.chdir(newdir) + except: + weechat.prnt("-[" + EX_NAME + "]- an error occured while running command `cd " + newdir + "`") + else: + weechat.prnt("-[" + EX_NAME + "]- command `cd " + newdir + "` sucessfully launched") + + +def exhelp(): + weechat.prnt("") + weechat.prnt("-[" + EX_NAME + "]- (help)") + weechat.prnt("") + weechat.prnt(" Usage : ") + weechat.prnt(" /exec :") + weechat.prnt(" -> display this help") + weechat.prnt(" /url %command% :") + weechat.prnt(" -> display result of %command% in the current buffer") + weechat.prnt(" /url -o %command% :") + weechat.prnt(" -> display result of %command% in the current channel") + weechat.prnt("") + +def exmain(server, args): + largs = string.split(args, " ") + + #strip spaces + while '' in largs: + largs.remove('') + while ' ' in largs: + largs.remove(' ') + + if len(largs) == 0: + exhelp() + else: + if len(largs) == 1: + if largs[0] == '-o': + exhelp() + elif largs[0] == 'cd': + exchdir([]) + else: + excmdbuf(largs) + else: + if largs[0] == '-o': + excmdchan(largs[1:]) + elif largs[0] == 'cd': + exchdir(largs[1:]) + else: + excmdbuf(largs) + |