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 92D1013888F for ; Wed, 28 Oct 2015 16:50:46 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 2BC4121C014; Wed, 28 Oct 2015 16:50:46 +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 A881F21C014 for ; Wed, 28 Oct 2015 16:50:45 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id C07E9340AA7 for ; Wed, 28 Oct 2015 16:50:44 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 1F00A192C for ; Wed, 28 Oct 2015 16:50:41 +0000 (UTC) From: "Mike Frysinger" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Frysinger" Message-ID: <1446050996.d307242bf41554640a8966d79f6f36738d3391ee.vapier@gentoo> Subject: [gentoo-commits] proj/catalyst:master commit in: catalyst/ X-VCS-Repository: proj/catalyst X-VCS-Files: catalyst/defaults.py catalyst/main.py X-VCS-Directories: catalyst/ X-VCS-Committer: vapier X-VCS-Committer-Name: Mike Frysinger X-VCS-Revision: d307242bf41554640a8966d79f6f36738d3391ee X-VCS-Branch: master Date: Wed, 28 Oct 2015 16:50:41 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 36feb532-367f-46a3-8cb6-8c086899d246 X-Archives-Hash: bdc003c96d4ac318bc132fceb52f0bcc commit: d307242bf41554640a8966d79f6f36738d3391ee Author: Mike Frysinger gentoo org> AuthorDate: Tue Oct 27 05:51:52 2015 +0000 Commit: Mike Frysinger gentoo org> CommitDate: Wed Oct 28 16:49:56 2015 +0000 URL: https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=d307242b main: extend the -c option to accept multiple files 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'])