Mercurial > piecrust2
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( |