Sha256: c2df6e8ccc6c1b83f1b397ff392a71658bbbf57fcf1e827a0367d229604fac5d

Contents?: true

Size: 1.35 KB

Versions: 30

Compression:

Stored size: 1.35 KB

Contents

require "capistrano/scm/plugin"
require "securerandom"

class Capistrano::SCM::Hg < Capistrano::SCM::Plugin
  def register_hooks
    after "deploy:new_release_path", "hg:create_release"
    before "deploy:check", "hg:check"
    before "deploy:set_current_revision", "hg:set_current_revision"
  end

  def define_tasks
    eval_rakefile File.expand_path("../tasks/hg.rake", __FILE__)
  end

  def hg(*args)
    args.unshift(:hg)
    backend.execute(*args)
  end

  def repo_mirror_exists?
    backend.test " [ -d #{repo_path}/.hg ] "
  end

  def check_repo_is_reachable
    hg "id", repo_url
  end

  def clone_repo
    hg "clone", "--noupdate", repo_url, repo_path.to_s
  end

  def update_mirror
    hg "pull"
  end

  def archive_to_release_path
    if (tree = fetch(:repo_tree))
      tree = tree.slice %r#^/?(.*?)/?$#, 1
      components = tree.split("/").size
      temp_tar = "#{fetch(:tmp_dir)}/#{SecureRandom.hex(10)}.tar"

      hg "archive -p . -I", tree, "--rev", fetch(:branch), temp_tar

      backend.execute :mkdir, "-p", release_path
      backend.execute :tar, "-x --strip-components #{components} -f", temp_tar, "-C", release_path
      backend.execute :rm, temp_tar
    else
      hg "archive", release_path, "--rev", fetch(:branch)
    end
  end

  def fetch_revision
    backend.capture(:hg, "log --rev #{fetch(:branch)} --template \"{node}\n\"")
  end
end

Version data entries

30 entries across 30 versions & 2 rubygems

Version Path
capistrano-3.19.2 lib/capistrano/scm/hg.rb
capistrano-3.19.1 lib/capistrano/scm/hg.rb
capistrano-3.19.0 lib/capistrano/scm/hg.rb
capistrano-3.18.1 lib/capistrano/scm/hg.rb
honeybadger-5.4.0 vendor/bundle/ruby/3.2.0/gems/capistrano-3.18.0/lib/capistrano/scm/hg.rb
honeybadger-5.3.0 vendor/bundle/ruby/3.2.0/gems/capistrano-3.18.0/lib/capistrano/scm/hg.rb
capistrano-3.18.0 lib/capistrano/scm/hg.rb
capistrano-3.17.3 lib/capistrano/scm/hg.rb
capistrano-3.17.2 lib/capistrano/scm/hg.rb
capistrano-3.17.1 lib/capistrano/scm/hg.rb
capistrano-3.17.0 lib/capistrano/scm/hg.rb
capistrano-3.16.0 lib/capistrano/scm/hg.rb
capistrano-3.15.0 lib/capistrano/scm/hg.rb
capistrano-3.14.1 lib/capistrano/scm/hg.rb
capistrano-3.14.0 lib/capistrano/scm/hg.rb
capistrano-3.13.0 lib/capistrano/scm/hg.rb
capistrano-3.12.1 lib/capistrano/scm/hg.rb
capistrano-3.12.0 lib/capistrano/scm/hg.rb
honeybadger-4.5.3 vendor/bundle/ruby/2.6.0/gems/capistrano-3.11.0/lib/capistrano/scm/hg.rb
capistrano-3.11.2 lib/capistrano/scm/hg.rb