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:
commit
abd1cd51b7
32
dist/tools/pyterm/pyterm
vendored
32
dist/tools/pyterm/pyterm
vendored
@ -94,6 +94,9 @@ defaultnewline = "LF"
|
|||||||
# default prompt character
|
# default prompt character
|
||||||
defaultprompt = '>'
|
defaultprompt = '>'
|
||||||
|
|
||||||
|
# repeat command on empty line instead of sending the line
|
||||||
|
defaultrepeat_cmd_empty_line = True
|
||||||
|
|
||||||
|
|
||||||
class SerCmd(cmd.Cmd):
|
class SerCmd(cmd.Cmd):
|
||||||
"""Main class for pyterm based on Python's Cmd class.
|
"""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,
|
def __init__(self, port=None, baudrate=None, toggle=None, tcp_serial=None,
|
||||||
confdir=None, conffile=None, host=None, run_name=None,
|
confdir=None, conffile=None, host=None, run_name=None,
|
||||||
log_dir_name=None, newline=None, formatter=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.
|
"""Constructor.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -134,6 +138,7 @@ class SerCmd(cmd.Cmd):
|
|||||||
self.log_dir_name = log_dir_name
|
self.log_dir_name = log_dir_name
|
||||||
self.newline = newline
|
self.newline = newline
|
||||||
self.serprompt = serprompt
|
self.serprompt = serprompt
|
||||||
|
self.repeat_command_on_empty_line = repeat_command_on_empty_line
|
||||||
if formatter is not None:
|
if formatter is not None:
|
||||||
self.fmt_str = formatter
|
self.fmt_str = formatter
|
||||||
|
|
||||||
@ -272,6 +277,16 @@ class SerCmd(cmd.Cmd):
|
|||||||
return "PYTERM_" + line[1:]
|
return "PYTERM_" + line[1:]
|
||||||
return line
|
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):
|
def default(self, line):
|
||||||
"""In case of no Pyterm specific prefix is detected, split
|
"""In case of no Pyterm specific prefix is detected, split
|
||||||
string by colons and send it to the node.
|
string by colons and send it to the node.
|
||||||
@ -804,6 +819,18 @@ if __name__ == "__main__":
|
|||||||
% defaultprompt,
|
% defaultprompt,
|
||||||
default=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()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if args.noprefix:
|
if args.noprefix:
|
||||||
@ -811,7 +838,8 @@ if __name__ == "__main__":
|
|||||||
myshell = SerCmd(args.port, args.baudrate, args.toggle, args.tcp_serial,
|
myshell = SerCmd(args.port, args.baudrate, args.toggle, args.tcp_serial,
|
||||||
args.directory, args.config, args.host, args.run_name,
|
args.directory, args.config, args.host, args.run_name,
|
||||||
args.log_dir_name, args.newline, args.format,
|
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 = ''
|
myshell.prompt = ''
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user