Sha256: 29f6cb6d4bba6c9e4854f62643f6ce32f85425fe94e24e2f0b302a063305a394
Contents?: true
Size: 1.98 KB
Versions: 3
Compression:
Stored size: 1.98 KB
Contents
# encoding: utf-8 module Nanoc::Extra::Deployers # A deployer that deploys a site using rsync. # # The configuration has should include a `:dst` value, a string containing # the destination to where rsync should upload its data. It will likely be # in `host:path` format. It should not end with a slash. For example, # `"example.com:/var/www/sites/mysite/html"`. # # @example A deployment configuration with public and staging configurations # # deploy: # public: # kind: rsync # dst: "ectype:sites/stoneship/public" # staging: # kind: rsync # dst: "ectype:sites/stoneship-staging/public" # options: [ "-glpPrtvz" ] class Rsync < ::Nanoc::Extra::Deployer # Default rsync options DEFAULT_OPTIONS = [ '-glpPrtvz', '--exclude=".hg"', '--exclude=".svn"', '--exclude=".git"' ] # @see Nanoc::Extra::Deployer#run def run require 'systemu' # Get params src = File.expand_path(self.source_path) + '/' dst = self.config[:dst] options = self.config[:options] || DEFAULT_OPTIONS # Validate error 'No dst found in deployment configuration' if dst.nil? error 'dst requires no trailing slash' if dst[-1,1] == '/' # Run if dry_run warn 'Performing a dry-run; no actions will actually be performed' run_shell_cmd([ 'echo', 'rsync', options, src, dst ].flatten) else run_shell_cmd([ 'rsync', options, src, dst ].flatten) end end private # Prints the given message on stderr and exits. def error(msg) raise RuntimeError.new(msg) end # Runs the given shell command. It will raise an error if execution fails # (results in a nonzero exit code). def run_shell_cmd(args) status = systemu(args, 'stdout' => $stdout, 'stderr' => $stderr) raise "command exited with a nonzero status code #{$?.exitstatus} (command: #{args.join(' ')})" if !status.success? end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
nanoc-3.3.2 | lib/nanoc/extra/deployers/rsync.rb |
nanoc-3.3.1 | lib/nanoc/extra/deployers/rsync.rb |
nanoc-3.3.0 | lib/nanoc/extra/deployers/rsync.rb |