diff options
author | Peter Kjellerstedt <peter.kjellerstedt@axis.com> | 2019-05-23 20:42:54 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-05-27 17:06:27 +0100 |
commit | 60e8de529eb0dfd546d96af3c2cdd7f23041ab45 (patch) | |
tree | f2961dc427d0b6afcab2ec3200f6c36eb32939e6 /meta/recipes-extended/texinfo-dummy-native/texinfo-dummy | |
parent | f09cb832fa8e83e7e5faf6bd9464481aef5b4547 (diff) | |
download | openembedded-core-contrib-60e8de529eb0dfd546d96af3c2cdd7f23041ab45.tar.gz |
texinfo-dummy-native: Rewrite template.py to use argparse
The original version of template.py parses the arguments manually. This
fails when looking for the -E option if, e.g., an -I option is specified
without any space before its argument, and that argument contains the
letter 'E'.
A minor difference to the original version is that it parsed the
arguments in the order they were specified on the command line whereas
this version will always handle -E before -o.
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-extended/texinfo-dummy-native/texinfo-dummy')
-rw-r--r-- | meta/recipes-extended/texinfo-dummy-native/texinfo-dummy/template.py | 55 |
1 files changed, 18 insertions, 37 deletions
diff --git a/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy/template.py b/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy/template.py index fcc28548af..86c7c1811a 100644 --- a/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy/template.py +++ b/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy/template.py @@ -28,10 +28,8 @@ # of the executable from argv[0] and emulate the corresponding program, so # multiple copies of this script will exist under different names. -import sys, os +import sys, os, argparse -olong = "--output=" -Elong = "--macro-expand=" this_binary = sys.argv[0].split("/")[-1] @@ -61,18 +59,9 @@ complex_binaries = "makeinfo texi2any".split() valid_binaries = simple_binaries + complex_binaries -# For generating blank output files. -def touch_file(path): - with open(path, "w"): - pass - assert this_binary in valid_binaries, \ this_binary + " is not one of " + ', '.join(valid_binaries) -if "--version" in sys.argv: - print(version_str) - sys.exit(0) - # For debugging log_interceptions = False if log_interceptions: @@ -81,35 +70,27 @@ if log_interceptions: # Look through the options and flags, and if necessary, touch any output # files. -arg_idx = 1 -while arg_idx < len(sys.argv): - arg = sys.argv [arg_idx] - - if arg == "--": - break +p = argparse.ArgumentParser() +if this_binary in complex_binaries: + p.add_argument('-E', '--macro-expand', metavar='FILE') +p.add_argument('-o', '--output', metavar='DEST') +p.add_argument('--version', action='store_true') - # Something like -I . can result in a need for this (specifically the .) - elif len(arg) < 2: - pass - - # Check if -o or --output is specified. These can be used at most once. - elif arg[0] == '-' and arg[1] != '-' and arg[len(arg) - 1] == 'o': - touch_file(sys.argv[arg_idx + 1]) - sys.exit(0) - elif arg.startswith(olong): - touch_file(arg.split("=")[1]) - sys.exit(0) +args, unknown = p.parse_known_args() - # Check for functionality that isn't implemented yet. - else: - assert arg[0] != '-' or arg[1] == '-' or 'E' not in arg or \ - this_binary in simple_binaries, \ - "-E option not yet supported" + stub_msg +if args.version: + print(version_str) + sys.exit(0) - assert not arg.startswith(Elong), \ - Elong[:-1] + " option not yet supported" + stub_msg +# Check for functionality that isn't implemented yet. +assert not getattr(args, 'macro_expand', None), \ + "-E/--macro-expand option not yet supported" + stub_msg - arg_idx += 1 +# Check if -o or --output is specified. +if args.output: + with open(args.output, 'w'): + pass + sys.exit(0) # The -o/--output option overrides the default. For makeinfo and texi2any, # that default is to look for a @setfilename command in the input file. |