1
0
Fork 0
mirror of https://github.com/capistrano/capistrano synced 2023-03-27 23:21:18 -04:00

optimise mkdir commands

This commit is contained in:
seenmyfate 2013-03-19 09:27:57 +00:00
parent e55dbd70e1
commit 56b2917730
2 changed files with 24 additions and 13 deletions

View file

@ -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

View file

@ -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