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? )