diff 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
line wrap: on
line diff
--- a/piecrust/main.py	Sun Jul 23 08:31:05 2017 -0700
+++ b/piecrust/main.py	Sun Jul 23 18:01:26 2017 -0700
@@ -91,8 +91,9 @@
         help="Makes the current command apply to a theme website.")
     parser.add_argument(
         '--config',
-        dest='config_variant',
-        help="The configuration variant to use for this command.")
+        action='append',
+        dest='config_variants',
+        help="The configuration variant(s) to use for this command.")
     parser.add_argument(
         '--config-set',
         nargs=2,
@@ -209,8 +210,9 @@
         cmd_name = pre_args.extra_args[0]
         if cmd_name in _command_caches:
             cache_key_str = _command_caches[cmd_name]
-    if pre_args.config_variant is not None:
-        cache_key_str += ',variant=%s' % pre_args.config_variant
+    if pre_args.config_variants:
+        for value in pre_args.config_variants:
+            cache_key_str += ',variant=%s' % value
     if pre_args.config_values:
         for name, value in pre_args.config_values:
             cache_key_str += ',%s=%s' % (name, value)
@@ -233,7 +235,7 @@
             root = None
 
     # Can't apply custom configuration stuff if there's no website.
-    if (pre_args.config_variant or pre_args.config_values) and not root:
+    if (pre_args.config_variants or pre_args.config_values) and not root:
         raise SiteNotFoundError(
             "Can't apply any configuration variant or value overrides, "
             "there is no website here.")
@@ -248,7 +250,7 @@
             cache=(not pre_args.no_cache),
             cache_key=cache_key,
             debug=pre_args.debug,
-            config_variant=pre_args.config_variant,
+            config_variants=pre_args.config_variants,
             config_values=pre_args.config_values)
         app = appfactory.create()
     else: