Module: Luban::Deployment::Application::Repository::SCM::Rsync

Defined in:
lib/luban/deployment/cli/application/scm/rsync.rb

Instance Method Summary collapse

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


14
# File 'lib/luban/deployment/cli/application/scm/rsync.rb', line 14

def available?; directory?(from); end

#cloneObject



26
27
28
# File 'lib/luban/deployment/cli/application/scm/rsync.rb', line 26

def clone
  test(rsync_cmd, "-acz", "#{from}/", clone_path)
end

#cloned?Boolean

Returns:

  • (Boolean)


16
17
18
19
# File 'lib/luban/deployment/cli/application/scm/rsync.rb', line 16

def cloned?
  directory?(clone_path) and 
  test("[ \"$(ls -A #{clone_path})\" ]") # Not empty
end

#fetch_revisionObject



21
22
23
24
# File 'lib/luban/deployment/cli/application/scm/rsync.rb', line 21

def fetch_revision
  # Use MD5 as the revision
  capture(:tar, "-cf - #{clone_path} 2>/dev/null | openssl md5")[/\h+$/][0, rev_size]
end

#initObject



7
8
9
10
# File 'lib/luban/deployment/cli/application/scm/rsync.rb', line 7

def init
  super
  @from = Pathname.new(@from) unless from.is_a?(Pathname)
end

#releaseObject



34
35
36
37
38
39
40
41
# File 'lib/luban/deployment/cli/application/scm/rsync.rb', line 34

def release
  within(releases_path) do
    assure_dirs(release_tag)
    execute(:tar, "-C #{clone_path} -cf - . | tar -C #{release_tag} -xf -")
    execute(:tar, "-czf", release_package_path, release_tag)
    rmdir(release_tag)
  end
end

#rsync_cmdObject



12
# File 'lib/luban/deployment/cli/application/scm/rsync.rb', line 12

def rsync_cmd; :rsync; end

#updateObject



30
31
32
# File 'lib/luban/deployment/cli/application/scm/rsync.rb', line 30

def update
  test(rsync_cmd, "-acz", "--delete", "#{from}/", clone_path)
end