From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 7CE4013888F for ; Tue, 27 Oct 2015 05:52:42 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 4A4ECE0864; Tue, 27 Oct 2015 05:52:37 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 929BCE0864 for ; Tue, 27 Oct 2015 05:52:36 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 5332A340A33 for ; Tue, 27 Oct 2015 05:52:34 +0000 (UTC) From: Mike Frysinger To: gentoo-catalyst@lists.gentoo.org Subject: [gentoo-catalyst] [PATCH] main: extend the -c option to accept multiple files Date: Tue, 27 Oct 2015 01:52:31 -0400 Message-Id: <1445925151-28893-1-git-send-email-vapier@gentoo.org> X-Mailer: git-send-email 2.5.2 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-catalyst@lists.gentoo.org Reply-to: gentoo-catalyst@lists.gentoo.org X-Archives-Salt: dfcc0d21-b99d-4965-a103-ce2d26947058 X-Archives-Hash: 55c53cefd07770fbc74fdff92d3a3fa9 There's no real reason people can't load multiple config files, so extend the --config option into --configs and let people specify multiple ones. --- catalyst/defaults.py | 2 ++ catalyst/main.py | 55 +++++++++++++++++----------------------------------- 2 files changed, 20 insertions(+), 37 deletions(-) diff --git a/catalyst/defaults.py b/catalyst/defaults.py index 666afca..c5162d6 100644 --- a/catalyst/defaults.py +++ b/catalyst/defaults.py @@ -46,6 +46,8 @@ confdefaults={ "storedir": "/var/tmp/catalyst", } +DEFAULT_CONFIG_FILE = '/etc/catalyst/catalyst.conf' + PORT_LOGDIR_CLEAN = \ 'find "${PORT_LOGDIR}" -type f ! -name "summary.log*" -mtime +30 -delete' diff --git a/catalyst/main.py b/catalyst/main.py index 9f563cf..176871d 100644 --- a/catalyst/main.py +++ b/catalyst/main.py @@ -21,7 +21,7 @@ from DeComp.contents import ContentsMap from catalyst import log import catalyst.config -from catalyst.defaults import confdefaults, option_messages +from catalyst.defaults import confdefaults, option_messages, DEFAULT_CONFIG_FILE from catalyst.hash_utils import HashMap, HASH_DEFINITIONS from catalyst.support import CatalystError from catalyst.version import get_version @@ -36,40 +36,19 @@ def version(): log.info('Copyright 2008-2012 various authors') log.info('Distributed under the GNU General Public License version 2.1') -def parse_config(myconfig): +def parse_config(config_files): # search a couple of different areas for the main config file myconf={} - config_file="" - default_config_file = '/etc/catalyst/catalyst.conf' - # first, try the one passed (presumably from the cmdline) - if myconfig: - if os.path.exists(myconfig): - log.notice('Using command line specified Catalyst configuration file: %s', - myconfig) - config_file=myconfig - - else: - log.critical('Specified configuration file does not exist: %s', myconfig) - - # next, try the default location - elif os.path.exists(default_config_file): - log.notice('Using default Catalyst configuration file: %s', - default_config_file) - config_file = default_config_file - - # can't find a config file (we are screwed), so bail out - else: - log.critical('Could not find a suitable configuration file') - - # now, try and parse the config file "config_file" - try: -# execfile(config_file, myconf, myconf) - myconfig = catalyst.config.ConfigParser(config_file) - myconf.update(myconfig.get_values()) - - except Exception: - log.critical('Could not find parse configuration file: %s', myconfig) + # try and parse the config file "config_file" + for config_file in config_files: + log.notice('Loading configuration file: %s', config_file) + try: + config = catalyst.config.ConfigParser(config_file) + myconf.update(config.get_values()) + except Exception as e: + log.critical('Could not find parse configuration file: %s: %s', + config_file, e) # now, load up the values into conf_values so that we can use them for x in list(confdefaults): @@ -209,9 +188,9 @@ $ catalyst -f stage1-specfile.spec""" group.add_argument('-F', '--fetchonly', default=False, action='store_true', help='fetch files only') - group.add_argument('-c', '--config', - type=FilePath(), - help='use specified configuration file') + group.add_argument('-c', '--configs', + type=FilePath(), action='append', + help='use specified configuration files') group.add_argument('-f', '--file', type=FilePath(), help='read specfile') @@ -241,7 +220,9 @@ def main(): color=opts.color) # Parse the command line options. - myconfig = opts.config + myconfigs = opts.configs + if not myconfigs: + myconfigs = [DEFAULT_CONFIG_FILE] myspecfile = opts.file mycmdline = opts.cli[:] @@ -271,7 +252,7 @@ def main(): # made it this far so start by outputting our version info version() # import configuration file and import our main module using those settings - parse_config(myconfig) + parse_config(myconfigs) conf_values["options"].update(options) log.debug('conf_values[options] = %s', conf_values['options']) -- 2.5.2