aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2017-04-26 11:34:15 +0100
committerDaniel P. Berrange <berrange@redhat.com>2017-04-26 11:39:35 +0100
commit4d5e3eab6ddd707e680ed5e466cb310c0f291a86 (patch)
treeec5897ac1fef3c3d8299e54b1d26f77e6d776fad
parent1a6aaf853ff7202b869dc7868f800ed7da9538d0 (diff)
downloadkeycodemapdb-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-xtools/keymap-gen8
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()