lib/capistrano-db-tasks/dbtasks.rb in capistrano-db-tasks-0.3 vs lib/capistrano-db-tasks/dbtasks.rb in capistrano-db-tasks-0.4

- old
+ new

@@ -1,102 +1,120 @@ -require File.expand_path("#{File.dirname(__FILE__)}/util") -require File.expand_path("#{File.dirname(__FILE__)}/database") -require File.expand_path("#{File.dirname(__FILE__)}/asset") - -set :local_rails_env, ENV['RAILS_ENV'] || 'development' unless fetch(:local_rails_env) -set :rails_env, 'production' unless fetch(:rails_env) -set :db_local_clean, false unless fetch(:db_local_clean) -set :assets_dir, 'system' unless fetch(:assets_dir) -set :local_assets_dir, 'public' unless fetch(:local_assets_dir) - -namespace :db do - namespace :remote do - desc 'Synchronize your remote database using local database data' - task :sync do - on roles(:db) do - if Util.prompt 'Are you sure you want to REPLACE THE REMOTE DATABASE with local database' - Database.local_to_remote(self) - end - end - end - end - - namespace :local do - desc 'Synchronize your local database using remote database data' - task :sync do - on roles(:db) do - puts "Local database: #{Database::Local.new(self).database}" - if Util.prompt 'Are you sure you want to erase your local database with server database' - Database.remote_to_local(self) - end - end - end - end - - desc 'Synchronize your local database using remote database data' - task :pull => "db:local:sync" - - desc 'Synchronize your remote database using local database data' - task :push => "db:remote:sync" -end - -namespace :assets do - namespace :remote do - desc 'Synchronize your remote assets using local assets' - task :sync do - on roles(:app) do - puts "Assets directories: #{fetch(:assets_dir)}" - if Util.prompt "Are you sure you want to erase your server assets with local assets" - Asset.local_to_remote(self) - end - end - end - end - - namespace :local do - desc 'Synchronize your local assets using remote assets' - task :sync do - on roles(:app) do - puts "Assets directories: #{fetch(:local_assets_dir)}" - if Util.prompt "Are you sure you want to erase your local assets with server assets" - Asset.remote_to_local(self) - end - end - end - end - - desc 'Synchronize your local assets using remote assets' - task :pull => "assets:local:sync" - - desc 'Synchronize your remote assets using local assets' - task :push => "assets:remote:sync" -end - -namespace :app do - namespace :remote do - desc 'Synchronize your remote assets AND database using local assets and database' - task :sync do - if Util.prompt "Are you sure you want to REPLACE THE REMOTE DATABASE AND your remote assets with local database and assets(#{assets_dir})" - Database.local_to_remote(self) - Asset.local_to_remote(self) - end - end - end - - namespace :local do - desc 'Synchronize your local assets AND database using remote assets and database' - task :sync do - puts "Local database : #{Database::Local.new(self).database}" - puts "Assets directories : #{fetch(:local_assets_dir)}" - if Util.prompt "Are you sure you want to erase your local database AND your local assets with server database and assets(#{assets_dir})" - Database.remote_to_local(self) - Asset.remote_to_local(self) - end - end - end - - desc 'Synchronize your local assets AND database using remote assets and database' - task :pull => "app:local:sync" - - desc 'Synchronize your remote assets AND database using local assets and database' - task :push => "app:remote:sync" -end +require File.expand_path("#{File.dirname(__FILE__)}/util") +require File.expand_path("#{File.dirname(__FILE__)}/database") +require File.expand_path("#{File.dirname(__FILE__)}/asset") + +set :local_rails_env, ENV['RAILS_ENV'] || 'development' unless fetch(:local_rails_env) +set :rails_env, fetch(:stage) || 'production' unless fetch(:rails_env) +set :db_local_clean, false unless fetch(:db_local_clean) +set :assets_dir, 'system' unless fetch(:assets_dir) +set :local_assets_dir, 'public' unless fetch(:local_assets_dir) +set :skip_data_sync_confirm, (ENV['SKIP_DATA_SYNC_CONFIRM'].to_s.downcase == 'true') +set :disallow_pushing, false unless fetch(:disallow_pushing) + +namespace :capistrano_db_tasks do + task :check_can_push do + raise "pushing is disabled, set disallow_pushing to false to carry out this operation" if fetch(:disallow_pushing) + end +end + +namespace :db do + namespace :remote do + desc 'Synchronize your remote database using local database data' + task :sync => 'capistrano_db_tasks:check_can_push' do + on roles(:db) do + if fetch(:skip_data_sync_confirm) || Util.prompt('Are you sure you want to REPLACE THE REMOTE DATABASE with local database') + Database.local_to_remote(self) + end + end + end + end + + namespace :local do + desc 'Synchronize your local database using remote database data' + task :sync do + on roles(:db) do + puts "Local database: #{Database::Local.new(self).database}" + if fetch(:skip_data_sync_confirm) || Util.prompt('Are you sure you want to erase your local database with server database') + Database.remote_to_local(self) + end + end + end + end + + desc 'Synchronize your local database using remote database data' + task :pull => "db:local:sync" + + desc 'Synchronize your remote database using local database data' + task :push => "db:remote:sync" +end + +namespace :assets do + namespace :remote do + desc 'Synchronize your remote assets using local assets' + task :sync => 'capistrano_db_tasks:check_can_push' do + on roles(:app) do + puts "Assets directories: #{fetch(:assets_dir)}" + if fetch(:skip_data_sync_confirm) || Util.prompt("Are you sure you want to erase your server assets with local assets") + Asset.local_to_remote(self) + end + end + end + end + + namespace :local do + desc 'Synchronize your local assets using remote assets' + task :sync do + on roles(:app) do + puts "Assets directories: #{fetch(:local_assets_dir)}" + if fetch(:skip_data_sync_confirm) || Util.prompt("Are you sure you want to erase your local assets with server assets") + Asset.remote_to_local(self) + end + end + end + end + + desc 'Synchronize your local assets using remote assets' + task :pull => "assets:local:sync" + + desc 'Synchronize your remote assets using local assets' + task :push => "assets:remote:sync" +end + +namespace :app do + namespace :remote do + desc 'Synchronize your remote assets AND database using local assets and database' + task :sync => 'capistrano_db_tasks:check_can_push' do + if fetch(:skip_data_sync_confirm) || Util.prompt("Are you sure you want to REPLACE THE REMOTE DATABASE AND your remote assets with local database and assets(#{fetch(:assets_dir)})") + on roles(:db) do + Database.local_to_remote(self) + end + + on roles(:app) do + Asset.local_to_remote(self) + end + end + end + end + + namespace :local do + desc 'Synchronize your local assets AND database using remote assets and database' + task :sync do + puts "Local database : #{Database::Local.new(self).database}" + puts "Assets directories : #{fetch(:local_assets_dir)}" + if fetch(:skip_data_sync_confirm) || Util.prompt("Are you sure you want to erase your local database AND your local assets with server database and assets(#{fetch(:assets_dir)})") + on roles(:db) do + Database.remote_to_local(self) + end + + on roles(:app) do + Asset.remote_to_local(self) + end + end + end + end + + desc 'Synchronize your local assets AND database using remote assets and database' + task :pull => "app:local:sync" + + desc 'Synchronize your remote assets AND database using local assets and database' + task :push => "app:remote:sync" +end \ No newline at end of file