diff --git a/README.md b/README.md index ff24d40..7f1fcd9 100644 --- a/README.md +++ b/README.md @@ -198,6 +198,7 @@ which you can see by running: cap genesis:up # Uploads Vagrant database & local files into production cap genesis:up:db # Uploads Vagrant database into remote cap genesis:up:files # Uploads local project files to remote + cap genesis:teardown # Remove any existing remote deployment files; counterpart to cap's built-in deploy:setup Now run any one of those commands against an environemnt: diff --git a/deployment/lib/server.rb b/deployment/lib/server.rb index f33a550..a6c1070 100644 --- a/deployment/lib/server.rb +++ b/deployment/lib/server.rb @@ -1,5 +1,27 @@ require 'pathname' +before "genesis:teardown" do + set(:confirmed) do + logger.important <<-WARN + + ======================================================================== + + WARNING: You are about to permanently remove everything within #{deploy_to} + + ======================================================================== + + 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 desc "Restart Apache + Varnish" task :restart, :roles => :web do @@ -20,6 +42,11 @@ sudo "/etc/init.d/varnish stop" end + desc "Tear down anything previously deployed" + task :teardown, :roles => :web do + sudo "rm -rf #{deploy_to}" + end + desc "Fix permissions" task :permissions do # Avoid uploading problems if Apache owns directories