def _get(self, key, default={}, deliemeter=DELIMETER): """ note: conf_api.get return tuple(result, '') """ obj = conf_api.get(self.data, key, seps=deliemeter)[0] if not obj: LOG.debug("key %s not found in %s" % (key, self.data)) return default return obj
def main(argv=sys.argv): """ :param argv: Argument list to parse [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) 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) 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.get: (data, err) = A.get(data, options.get) if err: raise RuntimeError(err) if options.set: A.set_(data, *(options.set.split('='))) 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: # TODO: Reuse input type automatically detected as it's impossible to # detect output type w/o options.output. if options.otype is None: if options.itype is None: 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))
def _do_get(cnf, get_path): """ :param cnf: Configuration object to print out :param get_path: key path given in --get option :return: updated Configuration object if no error """ (cnf, err) = API.get(cnf, get_path) if cnf is None: # Failed to get the result. _exit_with_output("Failed to get result: err=%s" % err, 1) return cnf
def main(argv=sys.argv): """ :param argv: Argument list to parse [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) data = A.load(args, options.itype, options.merge, ignore_missing=options.ignore_missing) if options.args: diff = A.loads(options.args, options.atype) data.update(diff, options.merge) if options.get: (data, err) = A.get(data, options.get) if err: raise RuntimeError(err) if options.set: A.set_(data, *(options.set.split('='))) if options.output: cparser = A.find_loader(options.output, options.otype) cparser.dump(data, options.output) else: # TODO: Reuse input type automatically detected as it's impossible to # detect output type w/o options.output. if options.otype is None: if options.itype is None: 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))
def _set(self, key, val, dic=None, deliemeter=DELIMETER, dump=False): """def set_(dic, path, val, seps=P.PATH_SEPS, strategy=None):""" dumped = False # find and update file for path in glob.glob(self.config_path): _data = anyconfig.load(path) item = conf_api.get(_data, key, seps=deliemeter)[0] if item: conf_api.set_(_data, key, val, seps=deliemeter) if dump: dumped = True return self.dump(_data, path) if not dumped: raise Exception("Critical error in dump config to disk !")
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')