diff options
Diffstat (limited to 'lib/rake/contrib/sshpublisher.rb')
-rw-r--r-- | lib/rake/contrib/sshpublisher.rb | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/lib/rake/contrib/sshpublisher.rb b/lib/rake/contrib/sshpublisher.rb index bd6adc127e..64f577017c 100644 --- a/lib/rake/contrib/sshpublisher.rb +++ b/lib/rake/contrib/sshpublisher.rb @@ -8,22 +8,30 @@ module Rake class SshDirPublisher include Rake::DSL + # Creates an SSH publisher which will scp all files in +local_dir+ to + # +remote_dir+ on +host+ + def initialize(host, remote_dir, local_dir) @host = host @remote_dir = remote_dir @local_dir = local_dir end + # Uploads the files + def upload - sh %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} + sh "scp", "-rq", "#{@local_dir}/*", "#{@host}:#{@remote_dir}" end end # Publish an entire directory to a fresh remote directory using SSH. class SshFreshDirPublisher < SshDirPublisher + + # Uploads the files after removing the existing remote directory. + def upload - sh %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil - sh %{ssh #{@host} mkdir #{@remote_dir}} + sh "ssh", @host, "rm", "-rf", @remote_dir rescue nil + sh "ssh", @host, "mkdir", @remote_dir super end end @@ -32,7 +40,9 @@ module Rake class SshFilePublisher include Rake::DSL - # Create a publisher using the give host information. + # Creates an SSH publisher which will scp all +files+ in +local_dir+ to + # +remote_dir+ on +host+. + def initialize(host, remote_dir, local_dir, *files) @host = host @remote_dir = remote_dir @@ -40,10 +50,11 @@ module Rake @files = files end - # Upload the local directory to the remote directory. + # Uploads the files + def upload @files.each do |fn| - sh %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} + sh "scp", "-q", "#{@local_dir}/#{fn}", "#{@host}:#{@remote_dir}" end end end |