def load_config(configdb, args = None): args = argv[1:] if args is None else args set_debug_details(args.count('--debug')+args.count('-d')) default_config = config.DefaultValueLoader().load(configdb) _logger.info('default config:\n\t%s', config.pretty(default_config, '\n\t')) # parse cli options at first because we need the config file path in it cli_config = config.CommandLineArgumentsLoader().load(configdb, argv[1:]) _logger.info('cli arg parsed:\n\t%s', config.pretty(cli_config, '\n\t')) run_config = config.merge_config(default_config, cli_config) if run_config.generate_config: generate_config_file(configdb, run_config) try: conf_config = config.from_file(configdb, run_config.config_file) except config.ConfigFileLoader.ConfigValueError as err: _logger.error(err) sysexit(1) _logger.info('config file parsed:\n\t%s', config.pretty(conf_config, '\n\t')) run_config = config.merge_config(run_config, conf_config) # override saved settings again with cli options again, because we want # command line options to take higher priority run_config = config.merge_config(run_config, cli_config) if run_config.setter_args: run_config.setter_args = ','.join(run_config.setter_args).split(',') else: run_config.setter_args = list() _logger.info('running config is:\n\t%s', config.pretty(run_config, '\n\t')) return run_config
def load_config(configdb, args=None): args = argv[1:] if args is None else args set_debug_details(args.count('--debug') + args.count('-d')) default_config = config.DefaultValueLoader().load(configdb) _logger.debug('default config:\n\t%s', config.pretty(default_config, '\n\t')) # parse cli options at first because we need the config file path in it cli_config = config.CommandLineArgumentsLoader().load(configdb, argv[1:]) _logger.debug('cli arg parsed:\n\t%s', config.pretty(cli_config, '\n\t')) run_config = config.merge_config(default_config, cli_config) if run_config.generate_config: generate_config_file(configdb, run_config) config_file = run_config.config_file if not isfile(config_file): _logger.warning( "can't find config file %s, use default settings and cli settings", config_file) else: try: conf_config = config.from_file(configdb, run_config.config_file) except config.ConfigFileLoader.ConfigValueError as err: _logger.error(err) sysexit(1) _logger.debug('config file parsed:\n\t%s', config.pretty(conf_config, '\n\t')) run_config = config.merge_config(run_config, conf_config) # override saved settings again with cli options again, because we want # command line options to take higher priority run_config = config.merge_config(run_config, cli_config) if run_config.setter_args: run_config.setter_args = ','.join(run_config.setter_args).split(',') else: run_config.setter_args = list() # backward compatibility modifications if run_config.size_mode == 'collect': _logger.warning( 'size_mode=collect is obsolete, considering use collect=accompany instead' ) run_config.size_mode = 'highest' if 'accompany' not in run_config.collect: run_config.collect.append('accompany') _logger.info('running config is:\n\t%s', config.pretty(run_config, '\n\t')) return run_config
def load_config(configdb, args = None): args = argv[1:] if args is None else args set_debug_details(args.count('--debug')+args.count('-d')) default_config = config.DefaultValueLoader().load(configdb) _logger.debug('default config:\n\t%s', config.pretty(default_config, '\n\t')) # parse cli options at first because we need the config file path in it cli_config = config.CommandLineArgumentsLoader().load(configdb, argv[1:]) _logger.debug('cli arg parsed:\n\t%s', config.pretty(cli_config, '\n\t')) run_config = config.merge_config(default_config, cli_config) if run_config.generate_config: generate_config_file(configdb, run_config) config_file = run_config.config_file if not isfile(config_file): _logger.warning("can't find config file %s, use default settings and cli settings", config_file) else: try: conf_config = config.from_file(configdb, run_config.config_file) except config.ConfigFileLoader.ConfigValueError as err: _logger.error(err) sysexit(1) _logger.debug('config file parsed:\n\t%s', config.pretty(conf_config, '\n\t')) run_config = config.merge_config(run_config, conf_config) # override saved settings again with cli options again, because we want # command line options to take higher priority run_config = config.merge_config(run_config, cli_config) if run_config.setter_args: run_config.setter_args = ','.join(run_config.setter_args).split(',') else: run_config.setter_args = list() # backward compatibility modifications if run_config.size_mode == 'collect': _logger.warning( 'size_mode=collect is obsolete, considering use collect=accompany instead' ) run_config.size_mode = 'highest' if 'accompany' not in run_config.collect: run_config.collect.append('accompany') _logger.info('running config is:\n\t%s', config.pretty(run_config, '\n\t')) return run_config
def generate_config_file(configdb, config_content): filename = config_content.config_file _logger.info('save following config to file %s:\n\t%s', filename, config.pretty(config_content, '\n\t')) save_config(configdb, config_content, filename) sysexit(0)