Merge pull request #12120 from cladmi/pr/pyterm/configurable_repeat_command_on_empty_line

pyterm: configuring repeating command on empty line
This commit is contained in:
Alexandre Abadie 2019-09-10 09:41:05 +02:00 committed by GitHub
commit abd1cd51b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -94,6 +94,9 @@ defaultnewline = "LF"
# default prompt character
defaultprompt = '>'
# repeat command on empty line instead of sending the line
defaultrepeat_cmd_empty_line = True
class SerCmd(cmd.Cmd):
"""Main class for pyterm based on Python's Cmd class.
@ -105,7 +108,8 @@ class SerCmd(cmd.Cmd):
def __init__(self, port=None, baudrate=None, toggle=None, tcp_serial=None,
confdir=None, conffile=None, host=None, run_name=None,
log_dir_name=None, newline=None, formatter=None,
set_rts=None, set_dtr=None, serprompt=None):
set_rts=None, set_dtr=None, serprompt=None,
repeat_command_on_empty_line=defaultrepeat_cmd_empty_line):
"""Constructor.
Args:
@ -134,6 +138,7 @@ class SerCmd(cmd.Cmd):
self.log_dir_name = log_dir_name
self.newline = newline
self.serprompt = serprompt
self.repeat_command_on_empty_line = repeat_command_on_empty_line
if formatter is not None:
self.fmt_str = formatter
@ -272,6 +277,16 @@ class SerCmd(cmd.Cmd):
return "PYTERM_" + line[1:]
return line
def emptyline(self):
"""Either send empty line or repeat previous command.
Behavior can be configured with `repeat_command_on_empty_line`.
"""
if self.repeat_command_on_empty_line:
super().emptyline()
else:
self.default('')
def default(self, line):
"""In case of no Pyterm specific prefix is detected, split
string by colons and send it to the node.
@ -804,6 +819,18 @@ if __name__ == "__main__":
% defaultprompt,
default=defaultprompt)
# Keep help message in sync if changing the default
parser.add_argument("--repeat-command-on-empty-line",
dest='repeat_command_on_empty_line',
action='store_true',
help="Repeat command on empty line (Default)")
parser.add_argument("--no-repeat-command-on-empty-line",
dest='repeat_command_on_empty_line',
action="store_false",
help="Do not repeat command on empty line")
parser.set_defaults(
repeat_command_on_empty_line=defaultrepeat_cmd_empty_line)
args = parser.parse_args()
if args.noprefix:
@ -811,7 +838,8 @@ if __name__ == "__main__":
myshell = SerCmd(args.port, args.baudrate, args.toggle, args.tcp_serial,
args.directory, args.config, args.host, args.run_name,
args.log_dir_name, args.newline, args.format,
args.set_rts, args.set_dtr, args.prompt)
args.set_rts, args.set_dtr, args.prompt,
args.repeat_command_on_empty_line)
myshell.prompt = ''
try: