namespace :deploy do

namespace :commit do

  def capistrano_commit_roles
    fetch(:capistrano_commit_role, :all)
  end

  desc <<-DESC
    Save information about deployed revisions into database.
  DESC
  task :save do
    on roles(capistrano_commit_roles) do |host|

      invoke 'deploy:set_current_revision'
      rev = fetch(:current_revision)

      info "Host: #{host}, Revision: #{rev}"

      within current_path do
        with rails_env: fetch(:rails_env) do
          execute :rake, 'capistrano:commit:save', "HOST=#{host}", "REVISION=#{rev}"
        end
      end

    end
  end

  desc <<-DESC
    Show information about deployed revisions.
  DESC
  task :show do
    on roles(capistrano_commit_roles) do |host|

      invoke 'deploy:set_current_revision'
      rev = fetch(:current_revision)

      info "Host: #{host}, Revision: #{rev}"
    end
  end

end

end