#!/usr/bin/python3 import argparse def make_sub(subparsers, title, aliases=[], help=''): subparser = subparsers.add_parser(title, aliases=aliases, help=help, allow_abbrev=False) subparser_input = subparser.add_argument_group(title="INPUT", description="bla") subparser_input.add_argument("pathnames", nargs="*", type=str, help="pathnames of files to be processed", metavar="PATHNAME") subparser_input_mut_excl = subparser_input.add_mutually_exclusive_group() subparser_input_mut_excl.add_argument("--from-args", action="store_true", help="") subparser_input_mut_excl.add_argument("--from-files", action="store_true", help="") subparser_input_mut_excl.add_argument("--from-stdin", action="store_true", help="") subparser_input.add_argument("--input-pathname-separator", default="XXXXXXX", help="") return subparser def main(): parser = argparse.ArgumentParser(allow_abbrev=False) subparsers = parser.add_subparsers(required=True, dest="subcommand_name", description="Determine the program’s main action.", help="Name of the subcommand to be executed. One of:", metavar="SUBCOMMAND") sub1 = make_sub(subparsers, "set") sub2 = make_sub(subparsers, "verify", aliases=["check"], help="") sub2.add_argument('--extra') args = parser.parse_args() if __name__ == "__main__": main()