diff --git a/deployment/lib/sync.rb b/deployment/lib/sync.rb index 2aae851..4848ba6 100644 --- a/deployment/lib/sync.rb +++ b/deployment/lib/sync.rb @@ -44,6 +44,28 @@ end end +before "genesis:up:mirror" do + set(:confirmed) do + logger.important <<-WARN + + ======================================================== + + WARNING: You are about to DESTRUCTIVELY override "#{stage}" files! + + ======================================================== + + WARN + + answer = Capistrano::CLI.ui.ask " Are you sure you want to continue? (YES) " + if answer === 'YES' then true else false end + end + + unless fetch(:confirmed) + logger.info "\Aborted!" + exit + end +end + namespace :genesis do namespace :down do desc "Downloads both remote database & syncs remote files into Vagrant" @@ -125,6 +147,16 @@ end end + desc "Destructively syncs local project files to remote" + task :mirror, :roles => :web do + set :excludes, "--exclude '#{rsync_exclude.join('\' --exclude \'')}'" + + find_servers_for_task(current_task).each do |current_server| + system "chmod 600 #{ssh_options[:keys][0]}" unless ssh_options.keys.empty? + system "rsync -e \"ssh -i #{ssh_options[:keys][0]}\" -avvru --delete --copy-links #{excludes} --progress #{'--dry-run' if dry_run} #{local_web}/ #{user}@#{current_server}:#{remote_web}/" + end + end + desc "Uploads limited dirs to remote" task :limited, :roles => :web do set :excludes, "--exclude '#{rsync_exclude.join('\' --exclude \'')}'"