comparison piecrust/main.py @ 909:eed19a80c00e

chef: Allow multiple config variants to be applied.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 23 Jul 2017 18:01:26 -0700
parents 4850f8c21b6e
children 45ad976712ec
comparison
equal deleted inserted replaced
908:cedefb806bfd 909:eed19a80c00e
89 '--theme', 89 '--theme',
90 action='store_true', 90 action='store_true',
91 help="Makes the current command apply to a theme website.") 91 help="Makes the current command apply to a theme website.")
92 parser.add_argument( 92 parser.add_argument(
93 '--config', 93 '--config',
94 dest='config_variant', 94 action='append',
95 help="The configuration variant to use for this command.") 95 dest='config_variants',
96 help="The configuration variant(s) to use for this command.")
96 parser.add_argument( 97 parser.add_argument(
97 '--config-set', 98 '--config-set',
98 nargs=2, 99 nargs=2,
99 metavar=('NAME', 'VALUE'), 100 metavar=('NAME', 'VALUE'),
100 action='append', 101 action='append',
207 cache_key_str = 'default' 208 cache_key_str = 'default'
208 if pre_args.extra_args: 209 if pre_args.extra_args:
209 cmd_name = pre_args.extra_args[0] 210 cmd_name = pre_args.extra_args[0]
210 if cmd_name in _command_caches: 211 if cmd_name in _command_caches:
211 cache_key_str = _command_caches[cmd_name] 212 cache_key_str = _command_caches[cmd_name]
212 if pre_args.config_variant is not None: 213 if pre_args.config_variants:
213 cache_key_str += ',variant=%s' % pre_args.config_variant 214 for value in pre_args.config_variants:
215 cache_key_str += ',variant=%s' % value
214 if pre_args.config_values: 216 if pre_args.config_values:
215 for name, value in pre_args.config_values: 217 for name, value in pre_args.config_values:
216 cache_key_str += ',%s=%s' % (name, value) 218 cache_key_str += ',%s=%s' % (name, value)
217 219
218 logger.debug("Using cache key: %s" % cache_key_str) 220 logger.debug("Using cache key: %s" % cache_key_str)
231 root = find_app_root(theme=pre_args.theme) 233 root = find_app_root(theme=pre_args.theme)
232 except SiteNotFoundError: 234 except SiteNotFoundError:
233 root = None 235 root = None
234 236
235 # Can't apply custom configuration stuff if there's no website. 237 # Can't apply custom configuration stuff if there's no website.
236 if (pre_args.config_variant or pre_args.config_values) and not root: 238 if (pre_args.config_variants or pre_args.config_values) and not root:
237 raise SiteNotFoundError( 239 raise SiteNotFoundError(
238 "Can't apply any configuration variant or value overrides, " 240 "Can't apply any configuration variant or value overrides, "
239 "there is no website here.") 241 "there is no website here.")
240 242
241 if root: 243 if root:
246 root, 248 root,
247 theme_site=pre_args.theme, 249 theme_site=pre_args.theme,
248 cache=(not pre_args.no_cache), 250 cache=(not pre_args.no_cache),
249 cache_key=cache_key, 251 cache_key=cache_key,
250 debug=pre_args.debug, 252 debug=pre_args.debug,
251 config_variant=pre_args.config_variant, 253 config_variants=pre_args.config_variants,
252 config_values=pre_args.config_values) 254 config_values=pre_args.config_values)
253 app = appfactory.create() 255 app = appfactory.create()
254 else: 256 else:
255 appfactory = None 257 appfactory = None
256 app = NullPieCrust( 258 app = NullPieCrust(