diff options
author | Holger Paradies <retabell@gmx.de> | 2013-12-24 10:13:21 +0100 |
---|---|---|
committer | Holger Paradies <retabell@gmx.de> | 2014-01-04 15:58:52 +0100 |
commit | 0e66b833868a6a8530045db9002c1845f242e4ac (patch) | |
tree | e4905d91781675c260cad0011db4358f163861cb /kanotix-irc/skel/.weechat/python | |
parent | 432430a8d20a6a9845626e2ab475194a322a73dd (diff) | |
download | kanotix-packages-0e66b833868a6a8530045db9002c1845f242e4ac.zip kanotix-packages-0e66b833868a6a8530045db9002c1845f242e4ac.tar.gz |
kanotix-irc-1.0.0
Diffstat (limited to 'kanotix-irc/skel/.weechat/python')
-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) + |