view piecrust/publishing/rsync.py @ 979:45ad976712ec

tests: Big push to get the tests to pass again. - Lots of fixes everywhere in the code. - Try to handle debug logging in the multiprocessing worker pool when running in pytest. Not perfect, but usable for now. - Replace all `.md` test files with `.html` since now a auto-format extension always sets the format. - Replace `out` with `outfiles` in most places since now blog archives are added to the bake output and I don't want to add expected outputs for blog archives everywhere.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 29 Oct 2017 22:51:57 -0700
parents 13e8b50a2113
children
line wrap: on
line source

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):
        orig = self.config.get('source', ctx.bake_out_dir)
        dest = self.config.get('destination')
        if not dest:
            raise Exception("No destination specified.")

        rsync_options = self.config.get('options')
        if rsync_options is None:
            rsync_options = ['-avc', '--delete']

        args = ['rsync'] + rsync_options
        args += [orig, dest]
        return args