lib/awestruct/deploy/rsync_deploy.rb in awestruct-0.4.5 vs lib/awestruct/deploy/rsync_deploy.rb in awestruct-0.4.6
- old
+ new
@@ -1,20 +1,31 @@
-require 'awestruct/deployers'
-
+require 'awestruct/deploy/base_deploy'
+require 'shellwords'
require 'open3'
module Awestruct
module Deploy
- class RSyncDeploy
+ class RSyncDeploy < Base
def initialize(site_config, deploy_config)
@site_path = File.join( site_config.output_dir, '/' ).gsub(/^\w:\//, '/')
@host = deploy_config['host']
@path = File.join( deploy_config['path'], '/' )
+ @exclude = deploy_config['exclude']
end
- def run
- cmd = "rsync -r -l -i --no-p --no-g --chmod=Dg+sx,ug+rw --delete #{@site_path} #{@host}:#{@path}"
+ def publish_site
+ exclude_option = ""
+ if ! (@exclude.nil? or @exclude.empty?)
+ exclude_option = "--exclude=#{@exclude}"
+ end
+ cmd = "rsync -r -l -i --no-p --no-g --chmod=Dg+sx,ug+rw --delete #{exclude_option} #{@site_path} #{@host}:#{@path}"
+
+ # Shellwords mangles windows rsync command so we need to skip shell words
+ if(RUBY_PLATFORM !~ /mingw/)
+ cmd = Shellwords.escape(cmd)
+ end
+
Open3.popen3( cmd ) do |stdin, stdout, stderr|
stdin.close
threads = []
threads << Thread.new(stdout) do |i|
while ( ! i.eof? )