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'])
> 


Reply via email to