aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2013-01-20 13:52:48 -0800
committerelijah <elijah@riseup.net>2013-01-20 13:52:48 -0800
commit5ec0237fbb326f5602ee6f7d1cf9ed93c9ec58c6 (patch)
treedf011afe7ae49f9064e624c49fcca6f4a42ddd4d
parentba301b0c8d77ae2f455d3a2d736968c981b8c757 (diff)
downloadleap_cli-5ec0237fbb326f5602ee6f7d1cf9ed93c9ec58c6.tar.gz
leap_cli-5ec0237fbb326f5602ee6f7d1cf9ed93c9ec58c6.tar.bz2
fix bug with rsync when leap command is run from other directories
-rw-r--r--lib/leap_cli/commands/deploy.rb4
-rw-r--r--lib/leap_cli/remote/plugin.rb7
-rw-r--r--vendor/supply_drop/lib/supply_drop/rsync.rb4
3 files changed, 10 insertions, 5 deletions
diff --git a/lib/leap_cli/commands/deploy.rb b/lib/leap_cli/commands/deploy.rb
index a7f6bc3..37901f4 100644
--- a/lib/leap_cli/commands/deploy.rb
+++ b/lib/leap_cli/commands/deploy.rb
@@ -88,6 +88,8 @@ module LeapCli
end
def calculate_includes_from_files(files)
+ return nil unless files and files.any?
+
# prepend '/' (kind of like ^ for rsync)
includes = files.collect {|file| '/' + file}
@@ -98,7 +100,7 @@ module LeapCli
end
end
- # include all parent directories
+ # include all parent directories (required because of --exclude '*')
includes.size.times do |i|
path = File.dirname(includes[i])
while(path != '/')
diff --git a/lib/leap_cli/remote/plugin.rb b/lib/leap_cli/remote/plugin.rb
index 213c981..c32b0be 100644
--- a/lib/leap_cli/remote/plugin.rb
+++ b/lib/leap_cli/remote/plugin.rb
@@ -48,7 +48,10 @@ module LeapCli; module Remote; module Plugin
#end
#
- # takes a block, yielded a server, that should return {:source => '', :dest => ''}
+ # takes a block, yielded a server, that should return a hash with various rsync options.
+ # supported options include:
+ #
+ # {:source => '', :dest => '', :flags => '', :includes => [], :excludes => []}
#
def rsync_update
SupplyDrop::Util.thread_pool_size = puppet_parallel_rsync_pool_size
@@ -76,7 +79,7 @@ module LeapCli; module Remote; module Plugin
# run command
logger.debug rsync_cmd
- Dir.chdir(options[:chdir] || '.') do
+ Dir.chdir(options[:chdir] || Path.provider) do
ok = system(rsync_cmd)
failed_servers << server.host unless ok
end
diff --git a/vendor/supply_drop/lib/supply_drop/rsync.rb b/vendor/supply_drop/lib/supply_drop/rsync.rb
index 732a719..a3d4898 100644
--- a/vendor/supply_drop/lib/supply_drop/rsync.rb
+++ b/vendor/supply_drop/lib/supply_drop/rsync.rb
@@ -18,11 +18,11 @@ module SupplyDrop
end
def excludes(patterns)
- [patterns].flatten.map { |p| "--exclude='#{p}'" }
+ [patterns].flatten.compact.map { |p| "--exclude='#{p}'" }
end
def includes(patterns)
- [patterns].flatten.map { |p| "--include='#{p}'" }
+ [patterns].flatten.compact.map { |p| "--include='#{p}'" }
end
def ssh_options(options)