diff piecrust/publishing/rsync.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 f6a13dba38d6
children
line wrap: on
line diff
--- a/piecrust/publishing/rsync.py	Tue Jun 20 21:10:39 2017 -0700
+++ b/piecrust/publishing/rsync.py	Tue Jun 20 21:12:35 2017 -0700
@@ -1,21 +1,22 @@
-from piecrust.publishing.base import ShellCommandPublisherBase
+from piecrust.publishing.shell import ShellCommandPublisherBase
 
 
 class RsyncPublisher(ShellCommandPublisherBase):
     PUBLISHER_NAME = 'rsync'
     PUBLISHER_SCHEME = 'rsync'
 
+    def parseUrlTarget(self, url):
+        self.config = {
+            'destination': (url.netloc + url.path)
+        }
+
     def _getCommandArgs(self, ctx):
-        if self.has_url_config:
-            orig = ctx.bake_out_dir
-            dest = self.config.netloc + self.config.path
-        else:
-            orig = self.getConfigValue('source', ctx.bake_out_dir)
-            dest = self.getConfigValue('destination')
+        orig = self.config.get('source', ctx.bake_out_dir)
+        dest = self.config.get('destination')
+        if not dest:
+            raise Exception("No destination specified.")
 
-        rsync_options = None
-        if not self.has_url_config:
-            rsync_options = self.getConfigValue('options')
+        rsync_options = self.config.get('options')
         if rsync_options is None:
             rsync_options = ['-avc', '--delete']