39 lines
1.0 KiB
Ruby
39 lines
1.0 KiB
Ruby
|
module Middleman
|
||
|
module Deploy
|
||
|
module Methods
|
||
|
class Rsync < Base
|
||
|
|
||
|
attr_reader :clean, :flags, :host, :path, :port, :user
|
||
|
|
||
|
def initialize(server_instance, options={})
|
||
|
super(server_instance, options)
|
||
|
|
||
|
@clean = self.options.clean
|
||
|
@flags = self.options.flags
|
||
|
@host = self.options.host
|
||
|
@path = self.options.path
|
||
|
@port = self.options.port
|
||
|
@user = self.options.user
|
||
|
end
|
||
|
|
||
|
def process
|
||
|
# Append "@" to user if provided.
|
||
|
user = "#{self.user}@" if self.user && !self.user.empty?
|
||
|
|
||
|
dest_url = "#{user}#{self.host}:#{self.path}"
|
||
|
flags = self.flags || '-avze'
|
||
|
command = "rsync #{flags} 'ssh -p #{self.port}' #{self.server_instance.build_dir}/ #{dest_url}"
|
||
|
|
||
|
if self.clean
|
||
|
command += " --delete"
|
||
|
end
|
||
|
|
||
|
puts "## Deploying via rsync to #{dest_url} port=#{self.port}"
|
||
|
run command
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|