Sha256: 86816c4d4cf5eef399dfa6f074fff4c74c2847b077f8a9195726de1ae17a8d20

Contents?: true

Size: 1.59 KB

Versions: 3

Compression:

Stored size: 1.59 KB

Contents

load File.expand_path("../tasks/scm-local.rake", __FILE__)

require 'capistrano/scm'

require 'zlib'
require 'archive/tar/minitar'
include Archive::Tar
require 'tmpdir'
require 'fileutils'

class Capistrano::Local < Capistrano::SCM
  module DefaultStrategy
    def check
      puts repo_url
      test! " [ -e #{repo_url} ] "
    end

    def release
      on release_roles :all, in: :parallel do |host|
      file_list = Dir.glob(repo_url + '/*').concat(Dir.glob(repo_url + '/.[^.]*'))
      file_list.each { |r| upload! r, release_path, recursive: true }
    end
  end
end

module ArchiveStrategy
  def check
    test! " [ -e #{repo_url} ] "
  end

  def release
    archive = ''
    # preparing archive
    run_locally do
      archive = fetch(:tmp_dir, Dir::tmpdir()) + '/' + fetch(:application, 'distr') + "-#{release_timestamp}.tar.gz"
      unless File.exists?(archive)
        if File.directory?(repo_url) || !File.fnmatch('*.tar.gz', repo_url)
          Dir.chdir(repo_url) do
            Minitar.pack('.', Zlib::GzipWriter.new(File.open(archive, 'wb')))
          end
        else
          FileUtils.cp(repo_url, archive)
        end
      end
    end

    # uploading and unpacking
    on release_roles :all, in: :parallel do |host|
    upload! archive, releases_path, verbose: false
    remote_archive = File.join(releases_path, File.basename(archive))
    execute :tar, 'xzf', remote_archive, '-C', release_path
    execute :rm, '-f', remote_archive
  end

  # removing archive
  run_locally do
    execute :rm, '-f', archive
  end
end
end
end

set :capistrano_local_archive, Capistrano::Local::ArchiveStrategy

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
capistrano-scm-local-0.1.6 lib/capistrano/scm-local.rb
capistrano-scm-local-0.1.5 lib/capistrano/scm-local.rb
capistrano-scm-local-0.1.4 lib/capistrano/scm-local.rb