Allow sending result of /system plugin

This commit is contained in:
James Booth
2016-03-01 00:58:22 +00:00
parent 2301da9f1c
commit 614a647bb1

View File

@@ -3,10 +3,13 @@ import subprocess
system_win = "System" system_win = "System"
def _get_result(command):
return subprocess.Popen(command, shell=True, stdout=subprocess.PIPE).stdout.read()
def _handle_win_input(win, command): def _handle_win_input(win, command):
prof.win_show_themed(win, "system", "command", None, command) prof.win_show_themed(win, "system", "command", None, command)
prof.win_show(win, "") prof.win_show(win, "")
result = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE).stdout.read() result = _get_result(command)
split = result.splitlines() split = result.splitlines()
for s in split: for s in split:
prof.win_show_themed(win, "system", "result", None, s) prof.win_show_themed(win, "system", "result", None, s)
@@ -16,22 +19,39 @@ def create_win():
if prof.win_exists(system_win) == False: if prof.win_exists(system_win) == False:
prof.win_create(system_win, _handle_win_input) prof.win_create(system_win, _handle_win_input)
def _cmd_system(command=None): def _cmd_system(arg1=None, arg2=None):
create_win() if arg1 == "send":
prof.win_focus(system_win) if arg2 == None:
if command: prof.cons_bad_cmd_usage("/system")
_handle_win_input(system_win, command) else:
room = prof.get_current_muc()
recipient = prof.get_current_recipient()
if room == None and recipient == None:
prof.cons_show("You must be in a chat or muc window to send a system command")
prof.cons_alert()
else:
result = _get_result(arg2)
prof.send_line(u'\u000A' + result)
else:
create_win()
prof.win_focus(system_win)
if arg1:
_handle_win_input(system_win, arg1)
def prof_init(version, status): def prof_init(version, status):
synopsis = [ synopsis = [
"/system", "/system",
"/system <command>" "/system <command>",
"/system send <command>"
] ]
description = "Run a system command, calling with no arguments will open or focus the system window." description = "Run a system command, calling with no arguments will open or focus the system window."
args = [ args = [
[ "<command>", "The system command to run" ] [ "send <command>", "Send the result of the command to the current recipient or room" ],
[ "<command>", "The system command to run" ]
] ]
examples = [ examples = [
"/system \"ls -l\"" "/system \"ls -l\"",
"/system send \"uname -a\""
] ]
prof.register_command("/system", 0, 1, synopsis, description, args, examples, _cmd_system) prof.register_command("/system", 0, 2, synopsis, description, args, examples, _cmd_system)
prof.register_ac("/system", [ "send" ])