Showing the changes to python (1 of 1 file). Show all
Unified · Split
| @@ -499,7 +499,24 @@ class process_cut(process_onset): · 498 unmodified lines | ||
| 499 | 499 | |
| 500 | 500 | def main(): |
| 501 | 501 | parser = aubio_parser() |
| 502 | − args = parser.parse_args() | |
| 502 | + if sys.version_info[0] != 3: | |
| 503 | + # on py2, create a dummy ArgumentParser to workaround the | |
| 504 | + # optional subcommand issue. See https://bugs.python.org/issue9253 | |
| 505 | + # This ensures that: | |
| 506 | + # - version string is shown when only '-V' is passed | |
| 507 | + # - help is printed if '-V' is passed with any other argument | |
| 508 | + # - any other argument get forwarded to the real parser | |
| 509 | + parser_root = argparse.ArgumentParser(add_help=False) | |
| 510 | + parser_root.add_argument('-V', '--version', help="show version", | |
| 511 | + action="store_true", dest="show_version") | |
| 512 | + args, extras = parser_root.parse_known_args() | |
| 513 | + if args.show_version == False: # no -V, forward to parser | |
| 514 | + args = parser.parse_args(extras, namespace=args) | |
| 515 | + elif len(extras) != 0: # -V with other arguments, print help | |
| 516 | + parser.print_help() | |
| 517 | + sys.exit(1) | |
| 518 | + else: # in py3, we can simply use parser directly | |
| 519 | + args = parser.parse_args() | |
| 503 | 520 | if 'show_version' in args and args.show_version: |
| 504 | 521 | sys.stdout.write('aubio version ' + aubio.version + '\n') |
| 505 | 522 | sys.exit(0) |