Skip to content

Instantly share code, notes, and snippets.

@wilr
Created February 21, 2013 02:09
Show Gist options
  • Save wilr/5001388 to your computer and use it in GitHub Desktop.
Save wilr/5001388 to your computer and use it in GitHub Desktop.
Composer helpers for using with Capistrano.
set :composer_bin, false
set :composer_options, "--no-scripts --verbose"
namespace :composer do
desc "Gets composer and installs it"
task :get, :roles => :app, :except => { :no_release => true } do
if remote_file_exists?("#{previous_release}/composer.phar")
pretty_print "--> Copying Composer from previous release"
run "#{try_sudo} sh -c 'cp #{previous_release}/composer.phar #{latest_release}/'"
puts_ok
end
if !remote_file_exists?("#{latest_release}/composer.phar")
pretty_print "--> Downloading Composer"
run "#{try_sudo} sh -c 'cd #{latest_release} && curl -s http://getcomposer.org/installer | #{php_bin}'"
else
pretty_print "--> Updating Composer"
run "#{try_sudo} sh -c 'cd #{latest_release} && #{php_bin} composer.phar self-update'"
end
puts_ok
end
desc "Updates composer"
task :self_update, :roles => :app, :except => { :no_release => true } do
pretty_print "--> Updating Composer"
run "#{try_sudo} sh -c 'cd #{latest_release} && #{composer_bin} self-update'"
puts_ok
end
desc "Runs composer to install vendors from composer.lock file"
task :install, :roles => :app, :except => { :no_release => true } do
if composer_bin
composer.self_update
else
composer.get
set :composer_bin, "#{php_bin} composer.phar"
end
pretty_print "--> Installing Composer dependencies"
run "#{try_sudo} sh -c 'cd #{latest_release} && #{composer_bin} install #{composer_options}'"
puts_ok
end
desc "Runs composer to update vendors, and composer.lock file"
task :update, :roles => :app, :except => { :no_release => true } do
if composer_bin
composer.self_update
else
composer.get
set :composer_bin, "#{php_bin} composer.phar"
end
run "#{try_sudo} sh -c 'cd #{latest_release} && #{composer_bin} update #{composer_options}'"
end
desc "Dumps an optimized autoloader"
task :dump_autoload, :roles => :app, :except => { :no_release => true } do
if composer_bin
composer.self_update
else
composer.get
set :composer_bin, "#{php_bin} composer.phar"
end
run "#{try_sudo} sh -c 'cd #{latest_release} && #{composer_bin} dump-autoload --optimize'"
end
task :copy_vendors, :except => { :no_release => true } do
run "vendorDir=#{current_path}/vendor; if [ -d $vendorDir ] || [ -h $vendorDir ]; then cp -a $vendorDir #{latest_release}/vendor; fi;"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment