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 2DF7B13888F for ; Wed, 28 Oct 2015 01:53:06 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 8BEF421C034; Wed, 28 Oct 2015 01:53:05 +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 1506B21C034 for ; Wed, 28 Oct 2015 01:53:05 +0000 (UTC) Received: from [192.168.1.250] (pool-72-95-142-247.pitbpa.fios.verizon.net [72.95.142.247]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: zerochaos) by smtp.gentoo.org (Postfix) with ESMTPSA id 1D27F340931 for ; Wed, 28 Oct 2015 01:53:03 +0000 (UTC) Subject: Re: [gentoo-catalyst] [PATCH] main: extend the -c option to accept multiple files To: gentoo-catalyst@lists.gentoo.org References: <1445925151-28893-1-git-send-email-vapier@gentoo.org> From: "Rick \"Zero_Chaos\" Farina" Message-ID: <56302A94.4060603@gentoo.org> Date: Tue, 27 Oct 2015 21:53:24 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 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 MIME-Version: 1.0 In-Reply-To: <1445925151-28893-1-git-send-email-vapier@gentoo.org> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Archives-Salt: 5311423b-30ba-41b7-b0b3-9efb7e0ded41 X-Archives-Hash: ce08aa92f82b486e2a62d482f529e0c5 I support this idea, but maybe we could leave the --config option so as not to confuse people who are only passing one config? Thanks, Zero On 10/27/2015 01:52 AM, Mike Frysinger wrote: > 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']) >