From 56b291773077fa4e5dad26c7148ac57d41628f07 Mon Sep 17 00:00:00 2001 From: seenmyfate Date: Tue, 19 Mar 2013 09:27:57 +0000 Subject: [PATCH] optimise mkdir commands --- lib/capistrano/dsl/paths.rb | 16 ++++++++++++++++ lib/capistrano/tasks/deploy.rake | 21 ++++++++------------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/lib/capistrano/dsl/paths.rb b/lib/capistrano/dsl/paths.rb index 0366eb30..83434616 100644 --- a/lib/capistrano/dsl/paths.rb +++ b/lib/capistrano/dsl/paths.rb @@ -42,6 +42,22 @@ module Capistrano def asset_timestamp env.timestamp.strftime("%Y%m%d%H%M.%S") end + + def linked_dirs(parent) + fetch(:linked_dirs, []).map { |dir| parent.join(dir) } + end + + def linked_files(parent) + fetch(:linked_files, []).map { |file| parent.join(file) } + end + + def linked_file_dirs(parent) + linked_files(parent).map { |file| file.dirname } + end + + def linked_dir_parents(parent) + linked_dirs(parent).map { |dir| dir.dirname } + end end end end diff --git a/lib/capistrano/tasks/deploy.rake b/lib/capistrano/tasks/deploy.rake index e2ecb374..b0ffced6 100644 --- a/lib/capistrano/tasks/deploy.rake +++ b/lib/capistrano/tasks/deploy.rake @@ -36,21 +36,16 @@ namespace :deploy do desc 'Check directories to be linked exist in shared' task :linked_dirs do on roles :app do - fetch(:linked_dirs).each do |dir| - dir = shared_path.join(dir) - execute :mkdir, '-pv', dir - end + execute :mkdir, '-pv', linked_dirs(shared_path) end end desc 'Check files to be linked exist in shared' task :linked_files do on roles :app do |host| - fetch(:linked_files).each do |file| - file_path = shared_path.join(file) - parent = file_path.dirname - execute :mkdir, '-pv', parent - unless test "[ -f #{file_path} ]" + execute :mkdir, '-pv', linked_file_dirs(shared_path) + linked_files(shared_path).each do |file| + unless test "[ -f #{file} ]" error t(:linked_file_does_not_exist, file: file, host: host) exit 1 end @@ -77,11 +72,11 @@ namespace :deploy do desc 'Symlink linked directories' task :linked_dirs do on roles :app do + execute :mkdir, '-pv', linked_dir_parents(release_path) + fetch(:linked_dirs).each do |dir| target = release_path.join(dir) source = shared_path.join(dir) - parent = target.dirname - execute :mkdir, '-pv', parent unless test "[ -L #{target} ]" if test "[ -f #{target} ]" execute :rm, '-rf', target @@ -95,11 +90,11 @@ namespace :deploy do desc 'Symlink linked files' task :linked_files do on roles :app do + execute :mkdir, '-pv', linked_file_dirs(release_path) + fetch(:linked_files).each do |file| target = release_path.join(file) source = shared_path.join(file) - parent = target.dirname - execute :mkdir, '-pv', parent unless test "[ -L #{target} ]" if test "[ -f #{target} ]" execute :rm, target