From aef8541135a9b133a285fedf9f1541e7ed6b1490 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 13 Nov 2016 21:50:45 +0000 Subject: [PATCH] syscmd.py: Make newlines configurable issue #9 --- stable/syscmd.py | 94 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 72 insertions(+), 22 deletions(-) diff --git a/stable/syscmd.py b/stable/syscmd.py index 4b4ff28..7db3541 100644 --- a/stable/syscmd.py +++ b/stable/syscmd.py @@ -33,41 +33,90 @@ def create_win(): prof.win_create(system_win, _handle_win_input) +def _handle_send(command=None): + if command == None: + prof.cons_bad_cmd_usage("/system") + return + + 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() + return + + result = _get_result(command) + newline = prof.settings_boolean_get("system", "newline", True) + if len(result.splitlines()) > 1 and newline: + prof.send_line(u'\u000A' + result) + else: + prof.send_line(result) + + +def _handle_exec(command=None): + if command == None: + prof.cons_bad_cmd_usage("/system") + return; + + create_win() + prof.win_focus(system_win) + _handle_win_input(system_win, command) + + +def _handle_newline(setting=None): + if not setting: + prof.cons_show("") + newline = prof.settings_boolean_get("system", "newline", True) + if newline: + prof.cons_show("syscmd.py newline: on") + else: + prof.cons_show("syscmd.py newline: off") + return + + if setting == "on": + prof.settings_boolean_set("system", "newline", True) + prof.cons_show("syscmd.py newline enabled.") + return + + if setting == "off": + prof.settings_boolean_set("system", "newline", False) + prof.cons_show("syscmd.py newline disabled.") + return + + prof.cons_bad_cmd_usage("/paste") + + def _cmd_system(arg1=None, arg2=None): if not arg1: create_win() prof.win_focus(system_win) - elif arg1 == "send": - if arg2 == None: - prof.cons_bad_cmd_usage("/system") - 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) - elif arg1 == "exec": - if arg2 == None: - prof.cons_bad_cmd_usage("/system") - else: - create_win() - prof.win_focus(system_win) - _handle_win_input(system_win, arg2) - else: - prof.cons_bad_cmd_usage("/system") + return; + + if arg1 == "newline": + _handle_newline(arg2) + return + + if arg1 == "send": + _handle_send(arg2) + return + + if arg1 == "exec": + _handle_exec(arg2) + return + + prof.cons_bad_cmd_usage("/system") def prof_init(version, status, account_name, fulljid): synopsis = [ "/system", + "/system newline on|off", "/system exec ", "/system send " ] description = "Run a system command, calling with no arguments will open or focus the system window." args = [ + [ "newline on|off", "Send newline before multiline command output, defaults to on" ], [ "exec ", "Execute a command" ], [ "send ", "Send the result of the command to the current recipient or room" ] ] @@ -76,4 +125,5 @@ def prof_init(version, status, account_name, fulljid): "/system send uname -a" ] prof.register_command("/system", 0, 2, synopsis, description, args, examples, _cmd_system) - prof.completer_add("/system", [ "exec", "send" ]) + prof.completer_add("/system", [ "exec", "send", "newline" ]) + prof.completer_add("/system newline", [ "on", "off" ])