qapi-gen: Convert from getopt to argparse

argparse is nicer to use than getopt, and gives us --help almost for
free.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20180211093607.27351-10-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
[eblake: Fix --output-dir editing accident]
Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Markus Armbruster 2018-02-11 10:35:47 +01:00 committed by Eric Blake
parent fb0bc835e5
commit 3b446a1817
2 changed files with 30 additions and 61 deletions

View file

@ -13,7 +13,6 @@
from __future__ import print_function
import errno
import getopt
import os
import re
import string
@ -1923,48 +1922,6 @@ def build_params(arg_type, boxed, extra):
return ret
#
# Common command line parsing
#
def parse_command_line(extra_options='', extra_long_options=[]):
try:
opts, args = getopt.gnu_getopt(sys.argv[1:],
'p:o:' + extra_options,
['prefix=', 'output-dir=']
+ extra_long_options)
except getopt.GetoptError as err:
print("%s: %s" % (sys.argv[0], str(err)), file=sys.stderr)
sys.exit(1)
output_dir = ''
prefix = ''
extra_opts = []
for oa in opts:
o, a = oa
if o in ('-p', '--prefix'):
match = re.match(r'([A-Za-z_.-][A-Za-z0-9_.-]*)?', a)
if match.end() != len(a):
print("%s: 'funny character '%s' in argument of --prefix" \
% (sys.argv[0], a[match.end()]), file=sys.stderr)
sys.exit(1)
prefix = a
elif o in ('-o', '--output-dir'):
output_dir = a + '/'
else:
extra_opts.append(oa)
if len(args) != 1:
print("%s: need exactly one argument" % sys.argv[0], file=sys.stderr)
sys.exit(1)
fname = args[0]
return (fname, output_dir, prefix, extra_opts)
#
# Accumulate and write output
#