diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2017-04-26 11:34:15 +0100 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2017-04-26 11:39:35 +0100 |
commit | 4d5e3eab6ddd707e680ed5e466cb310c0f291a86 (patch) | |
tree | ec5897ac1fef3c3d8299e54b1d26f77e6d776fad | |
parent | 1a6aaf853ff7202b869dc7868f800ed7da9538d0 (diff) | |
download | keycodemapdb-4d5e3eab6ddd707e680ed5e466cb310c0f291a86.zip keycodemapdb-4d5e3eab6ddd707e680ed5e466cb310c0f291a86.tar.gz keycodemapdb-4d5e3eab6ddd707e680ed5e466cb310c0f291a86.tar.bz2 |
Fix incompatibility with older argparse
With older argparse (circa 2.7.4 vintage), using set_defaults
to set a function on the main parser prevents it from ever
calling the functions set on the sub-parser.
We registered this default function so that we could get help
usage with argparse on python 3.x, since it doesn't print
error by default if no sub-parser command is given (but 2.x
does).
To workaround this, we instead check for 'func' attribute
existing on the parsed args. This is a no-op for python 2.x
since it already printed a usage message by default.
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
-rwxr-xr-x | tools/keymap-gen | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/keymap-gen b/tools/keymap-gen index e03c762..981768d 100755 --- a/tools/keymap-gen +++ b/tools/keymap-gen @@ -687,7 +687,7 @@ def name_docs(args): DOC_GENERATORS[args.lang].generate_name_docs(args.varname, database, args.mapname) -def usage(args): +def usage(): print ("Please select a command:") print (" 'code-map', 'code-table', 'name-map', 'name-table', 'docs'") sys.exit(1) @@ -701,7 +701,6 @@ def main(): ",".join(DOC_GENERATORS.keys()))) parser.add_argument("--varname", default=None, help="Data variable name") - parser.set_defaults(func=usage) subparsers = parser.add_subparsers(help="sub-command help") @@ -738,7 +737,10 @@ def main(): namedocsparser.set_defaults(func=name_docs) args = parser.parse_args() - args.func(args) + if hasattr(args, "func"): + args.func(args) + else: + usage() main() |