From 1e7c87b23ddf257d9d927f14eb53c272fd1f0759 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sat, 3 Mar 2018 03:08:20 +0100 Subject: [PATCH] be more helpful when parsing invalid --pattern values say what the real problem is. say what is valid. (cherry picked from commit f5ba0fc6498babb7a7b26ccd4c19e4169dfb5d8e) --- src/borg/patterns.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/borg/patterns.py b/src/borg/patterns.py index 897c75e2c..a2b7a26bf 100644 --- a/src/borg/patterns.py +++ b/src/borg/patterns.py @@ -367,17 +367,18 @@ def parse_inclexcl_command(cmd_line_str, fallback=ShellPattern): 'P': IECommand.PatternStyle, 'p': IECommand.PatternStyle, } + if not cmd_line_str: + raise argparse.ArgumentTypeError("A pattern/command must not be empty.") - try: - cmd = cmd_prefix_map[cmd_line_str[0]] + cmd = cmd_prefix_map.get(cmd_line_str[0]) + if cmd is None: + raise argparse.ArgumentTypeError("A pattern/command must start with any one of: %s" % + ', '.join(cmd_prefix_map)) - # remaining text on command-line following the command character - remainder_str = cmd_line_str[1:].lstrip() - - if not remainder_str: - raise ValueError("Missing pattern/information!") - except (IndexError, KeyError, ValueError): - raise argparse.ArgumentTypeError("Unable to parse pattern/command: {}".format(cmd_line_str)) + # remaining text on command-line following the command character + remainder_str = cmd_line_str[1:].lstrip() + if not remainder_str: + raise argparse.ArgumentTypeError("A pattern/command must have a value part.") if cmd is IECommand.RootPath: # TODO: validate string?