def _parse_args(argv): """ Show supported config format types or usage. :param argv: Argument list to parse or None (sys.argv will be set). :return: argparse.Namespace object or None (exit before return) """ parser = make_parser() args = parser.parse_args(argv) LOGGER.setLevel(to_log_level(args.loglevel)) if not args.inputs: if args.list: tlist = ", ".join(API.list_types()) _exit_with_output("Supported config types: " + tlist) elif args.env: cnf = os.environ.copy() _output_result(cnf, args.output, args.otype or "json", None, None) sys.exit(0) else: parser.print_usage() sys.exit(1) if args.validate and args.schema is None: _exit_with_output("--validate option requires --scheme option", 1) return args
def _parse_args(argv): """ Show supported config format types or usage. :param argv: Argument list to parse or None (sys.argv will be set). :return: argparse.Namespace object or None (exit before return) """ parser = make_parser() args = parser.parse_args(argv) LOGGER.setLevel(to_log_level(args.loglevel)) if args.inputs: if '-' in args.inputs: args.inputs = sys.stdin else: if args.list: _show_psrs() elif args.env: cnf = os.environ.copy() _output_result(cnf, args) sys.exit(0) else: parser.print_usage() sys.exit(1) if args.validate and args.schema is None: _exit_with_output("--validate option requires --scheme option", 1) return args
def _parse_args(argv): """ Show supported config format types or usage. :param argv: Argument list to parse or None (sys.argv will be set). :return: argparse.Namespace object or None (exit before return) """ parser = make_parser() args = parser.parse_args(argv) LOGGER.setLevel(to_log_level(args.loglevel)) if args.inputs: if '-' in args.inputs: args.inputs = sys.stdin else: if args.list: _show_psrs() elif args.env: cnf = os.environ.copy() _output_result(cnf, args.output, args.otype or "json", None, None) sys.exit(0) else: parser.print_usage() sys.exit(1) if args.validate and args.schema is None: _exit_with_output("--validate option requires --scheme option", 1) return args
def parse_args(argv=None, defaults=None): """ Make up an option and arguments parser. :param defaults: Default option values """ if defaults is None: defaults = DEFAULTS ctypes = API.list_types() ctypes_s = ", ".join(ctypes) type_help = "Select type of %s config files from " + \ ctypes_s + " [Automatically detected by file ext]" mts = API.MERGE_STRATEGIES mts_s = ", ".join(mts) mt_help = "Select strategy to merge multiple configs from " + \ mts_s + " [%(merge)s]" % defaults parser = optparse.OptionParser(USAGE, version="%%prog %s" % anyconfig.globals.VERSION) parser.set_defaults(**defaults) lpog = optparse.OptionGroup(parser, "List specific options") lpog.add_option("-L", "--list", help="List supported config types", action="store_true") parser.add_option_group(lpog) spog = optparse.OptionGroup(parser, "Schema specific options") spog.add_option("", "--validate", action="store_true", help="Only validate input files and do not output. " "You must specify schema file with -S/--schema " "option.") spog.add_option("", "--gen-schema", action="store_true", help="Generate JSON schema for givne config file[s] " "and output it instead of (merged) configuration.") parser.add_option_group(spog) gspog = optparse.OptionGroup(parser, "Get/set options") gspog.add_option("", "--get", help=_GET_HELP) gspog.add_option("", "--set", help=_SET_HELP) parser.add_option_group(gspog) parser.add_option("-o", "--output", help="Output file path") parser.add_option("-I", "--itype", choices=ctypes, help=(type_help % "Input")) parser.add_option("-O", "--otype", choices=ctypes, help=(type_help % "Output")) parser.add_option("-M", "--merge", choices=mts, help=mt_help) parser.add_option("-A", "--args", help="Argument configs to override") parser.add_option("", "--atype", choices=ctypes, help=_ATYPE_HELP_FMT % ctypes_s) parser.add_option("-x", "--ignore-missing", action="store_true", help="Ignore missing input files") parser.add_option("-T", "--template", action="store_true", help="Enable template config support") parser.add_option("-E", "--env", action="store_true", help="Load configuration defaults from " "environment values") parser.add_option("-S", "--schema", help="Specify Schema file[s] path") parser.add_option("-s", "--silent", action="store_const", dest="loglevel", const=0, help="Silent or quiet mode") parser.add_option("-q", "--quiet", action="store_const", dest="loglevel", const=0, help="Same as --silent option") parser.add_option("-v", "--verbose", action="store_const", dest="loglevel", const=2, help="Verbose mode") if argv is None: argv = sys.argv (options, args) = parser.parse_args(argv[1:]) return (parser, options, args)
def main(argv=None): """ :param argv: Argument list to parse or None (sys.argv will be set). """ if argv is None: argv = sys.argv parser = option_parser() (options, args) = parser.parse_args(argv[1:]) A.set_loglevel(to_log_level(options.loglevel)) if not args: if options.list: tlist = ", ".join(A.list_types()) + "\n" sys.stdout.write("Supported config types: " + tlist) sys.exit(0) else: parser.print_usage() sys.exit(1) if options.validate and options.schema is None: sys.stderr.write("--validate option requires --scheme option") sys.exit(1) data = data = os.environ.copy() if options.env else A.container() diff = A.load(args, options.itype, ignore_missing=options.ignore_missing, merge=options.merge, ac_template=options.template, ac_schema=options.schema) if diff is None: sys.stderr.write("Validation failed") sys.exit(1) data.update(diff) if options.args: diff = A.loads(options.args, options.atype, ac_template=options.template, ac_context=data) data.update(diff, options.merge) if options.validate: A.LOGGER.info("Validation succeeds") sys.exit(0) if options.gen_schema: data = A.gen_schema(data) if options.get: (data, err) = A.get(data, options.get) if err: raise RuntimeError(err) # Output primitive types as it is. if not anyconfig.mergeabledict.is_mergeabledict_or_dict(data): sys.stdout.write(str(data) + '\n') return if options.set: (key, val) = options.set.split('=') A.set_(data, key, anyconfig.parser.parse(val)) if options.output: cparser = A.find_loader(options.output, options.otype) if cparser is None: raise RuntimeError("No suitable dumper was found for %s", options.output) cparser.dump(data, options.output) else: if options.otype is None: if options.itype is None: psr = A.find_loader(args[0]) if psr is not None: options.otype = psr.type() # Reuse detected input type else: raise RuntimeError("Please specify input and/or output " "type with -I (--itype) or -O " "(--otype) option") else: options.otype = options.itype cparser = A.find_loader(None, options.otype) sys.stdout.write(cparser.dumps(data) + '\n')
def parse_args(argv=None, defaults=None): """ Make up an option and arguments parser. :param defaults: Default option values """ if defaults is None: defaults = DEFAULTS ctypes = API.list_types() ctypes_s = ", ".join(ctypes) type_help = "Select type of %s config files from " + \ ctypes_s + " [Automatically detected by file ext]" mts = API.MERGE_STRATEGIES mts_s = ", ".join(mts) mt_help = "Select strategy to merge multiple configs from " + \ mts_s + " [%(merge)s]" % defaults parser = optparse.OptionParser(USAGE, version="%%prog %s" % anyconfig.globals.VERSION) parser.set_defaults(**defaults) lpog = optparse.OptionGroup(parser, "List specific options") lpog.add_option("-L", "--list", help="List supported config types", action="store_true") parser.add_option_group(lpog) spog = optparse.OptionGroup(parser, "Schema specific options") spog.add_option("", "--validate", action="store_true", help="Only validate input files and do not output. " "You must specify schema file with -S/--schema " "option.") spog.add_option("", "--gen-schema", action="store_true", help="Generate JSON schema for givne config file[s] " "and output it instead of (merged) configuration.") parser.add_option_group(spog) gspog = optparse.OptionGroup(parser, "Query/Get/set options") gspog.add_option("-Q", "--query", help=_QUERY_HELP) gspog.add_option("", "--get", help=_GET_HELP) gspog.add_option("", "--set", help=_SET_HELP) parser.add_option_group(gspog) parser.add_option("-o", "--output", help="Output file path") parser.add_option("-I", "--itype", choices=ctypes, help=(type_help % "Input")) parser.add_option("-O", "--otype", choices=ctypes, help=(type_help % "Output")) parser.add_option("-M", "--merge", choices=mts, help=mt_help) parser.add_option("-A", "--args", help="Argument configs to override") parser.add_option("", "--atype", choices=ctypes, help=_ATYPE_HELP_FMT % ctypes_s) parser.add_option("-x", "--ignore-missing", action="store_true", help="Ignore missing input files") parser.add_option("-T", "--template", action="store_true", help="Enable template config support") parser.add_option("-E", "--env", action="store_true", help="Load configuration defaults from " "environment values") parser.add_option("-S", "--schema", help="Specify Schema file[s] path") parser.add_option("-s", "--silent", action="store_const", dest="loglevel", const=0, help="Silent or quiet mode") parser.add_option("-q", "--quiet", action="store_const", dest="loglevel", const=0, help="Same as --silent option") parser.add_option("-v", "--verbose", action="store_const", dest="loglevel", const=2, help="Verbose mode") if argv is None: argv = sys.argv (options, args) = parser.parse_args(argv[1:]) return (parser, options, args)