diff piecrust/app.py @ 885:13e8b50a2113

publish: Fix publishers API and add a simple "copy" publisher.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 20 Jun 2017 21:12:35 -0700
parents d1095774bfcf
children cc2647360036
line wrap: on
line diff
--- a/piecrust/app.py	Tue Jun 20 21:10:39 2017 -0700
+++ b/piecrust/app.py	Tue Jun 20 21:12:35 2017 -0700
@@ -178,20 +178,25 @@
         publish_config = self.config.get('publish')
         if publish_config is None:
             return tgts
+
         for n, t in publish_config.items():
-            pub_type = None
-            is_scheme = False
+            pub_class = None
             if isinstance(t, dict):
                 pub_type = t.get('type')
+                pub_class = defs_by_name[pub_type]
+                pub_cfg = t
             elif isinstance(t, str):
                 comps = urllib.parse.urlparse(t)
                 pub_type = comps.scheme
-                is_scheme = True
-            cls = (defs_by_scheme.get(pub_type) if is_scheme
-                   else defs_by_name.get(pub_type))
-            if cls is None:
+                pub_class = defs_by_scheme[pub_type]
+                pub_cfg = None
+            if pub_class is None:
                 raise ConfigurationError("No such publisher: %s" % pub_type)
-            tgt = cls(self, n, t)
+
+            tgt = pub_class(self, n, pub_cfg)
+            if pub_cfg is None:
+                tgt.parseUrlTarget(comps)
+
             tgts.append(tgt)
         return tgts