namespace :config do
task settings: 'settings:show' namespace :settings do desc 'Update the remote config/settings/<stage>.yml file with local' task upload: :delete do invoke "config/settings/#{fetch(:stage)}.yml" end desc 'Delete remote config/settings/<stage>.yml file' task :delete do on roles(:all) do |host| within shared_path do execute :rm, '-f', "config/settings/#{fetch(:stage)}.yml" end end end desc 'Show current settings' task :show do on roles(:all) do |host| within current_path.join('config') do execute :cat, 'settings.yml' execute :cat, "settings/#{fetch(:stage)}.yml" end end end desc 'Show current settings' task :get do on roles(:all) do |host| local_dir = File.join(Dir.pwd, 'config', 'settings') FileUtils.mkdir_p local_dir download! current_path.join('config', 'settings', "#{fetch(:stage)}.yml"), local_dir end end desc 'Edit remote settings' task :edit do on roles(:app), backend: :ssh_command do |*args| execute('\"\${EDITOR:-vi}\"', current_path.join('config', 'settings', "#{fetch(:stage)}.yml")) end end end
end
stages.each do |stage|
remote_file "config/settings/#{stage}.yml" => File.join(Dir.pwd, 'config', 'settings', "#{stage}.yml")
end