Class: Capistrano::BundleRsync::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/capistrano/bundle_rsync/config.rb

Class Method Summary collapse

Class Method Details

.build_ssh_command(host) ⇒ Object

Build ssh command options for rsync

First, search available user and keys configurations for each role:

role :app, ['hostname'], {
  user: username,
  keys: File.expand_path('~/.ssh/id_rsa'),
  port: 22,
}

If not available, look :bundle_rsync_ssh_options:

set :bundle_rsync_ssh_options {
  user: username,
  keys: [File.expand_path('~/.ssh/id_rsa')],
  port: 22,
}

If :bundle_rsync_ssh_options are not available also, look :ssh_options finally:

set :ssh_options {
  user: username,
  keys: [File.expand_path('~/.ssh/id_rsa')],
  port: 22,
}

‘keys` can be a string or an array. NOTE: :password is not supported.



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/capistrano/bundle_rsync/config.rb', line 61

def self.build_ssh_command(host)
  user_opt, key_opt, port_opt = "", "", ""
  ssh_options = fetch(:bundle_rsync_ssh_options) || fetch(:ssh_options) || {}
  if user = host.user || ssh_options[:user]
    user_opt = " -l #{user}"
  end
  if keys = (host.keys.empty? ? ssh_options[:keys] : host.keys)
    keys = keys.is_a?(Array) ? keys : [keys]
    key_opt = keys.map {|key| " -i #{key}" }.join("")
  end
  if port = host.port || ssh_options[:port]
    port_opt = " -p #{port}"
  end
  "ssh#{user_opt}#{key_opt}#{port_opt}"
end

.bundle_install_standaloneObject



96
97
98
# File 'lib/capistrano/bundle_rsync/config.rb', line 96

def self.bundle_install_standalone
  fetch(:bundle_rsync_bundle_install_standalone)
end

.bundle_install_standalone_optionObject



100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/capistrano/bundle_rsync/config.rb', line 100

def self.bundle_install_standalone_option
  case value = self.bundle_install_standalone
  when true
    "--standalone"
  when Array
    "--standalone #{value.join(' ')}"
  when String
    "--standalone #{value}"
  else
    nil
  end
end

.bundle_withoutObject



113
114
115
# File 'lib/capistrano/bundle_rsync/config.rb', line 113

def self.bundle_without
  fetch(:bundle_rsync_bundle_without) || [:development, :test]
end

.config_filesObject



23
24
25
26
# File 'lib/capistrano/bundle_rsync/config.rb', line 23

def self.config_files
  return nil unless config_files = fetch(:bundle_rsync_config_files)
  config_files.is_a?(Array) ? config_files : [config_files]
end

.keep_releasesObject



77
78
79
# File 'lib/capistrano/bundle_rsync/config.rb', line 77

def self.keep_releases
  @keep_releases = fetch(:bundle_rsync_keep_releases) || fetch(:keep_releases)
end

.local_base_pathObject



3
4
5
# File 'lib/capistrano/bundle_rsync/config.rb', line 3

def self.local_base_path
  @local_base_path ||= fetch(:bundle_rsync_local_base_path) || "#{Dir::pwd}/.local_repo"
end

.local_bundle_pathObject



19
20
21
# File 'lib/capistrano/bundle_rsync/config.rb', line 19

def self.local_bundle_path
  @local_bundle_path ||= fetch(:bundle_rsync_local_bundle_path) || "#{local_base_path}/bundle"
end

.local_mirror_pathObject



7
8
9
# File 'lib/capistrano/bundle_rsync/config.rb', line 7

def self.local_mirror_path
  @local_mirror_path ||= fetch(:bundle_rsync_local_mirror_path) || "#{local_base_path}/mirror"
end

.local_release_pathObject



15
16
17
# File 'lib/capistrano/bundle_rsync/config.rb', line 15

def self.local_release_path
  @local_release_path ||= fetch(:bundle_rsync_local_release_path) || "#{local_releases_path}/#{Time.new.strftime('%Y%m%d%H%M%S')}"
end

.local_releases_pathObject



11
12
13
# File 'lib/capistrano/bundle_rsync/config.rb', line 11

def self.local_releases_path
  @local_releases_path ||= fetch(:bundle_rsync_local_releases_path) || "#{local_base_path}/releases"
end

.max_parallels(hosts) ⇒ Object

Fetch the :bundle_rsync_max_parallels, where the default is the number of hosts



83
84
85
# File 'lib/capistrano/bundle_rsync/config.rb', line 83

def self.max_parallels(hosts)
  (fetch(:bundle_rsync_max_parallels) || hosts.size).to_i
end

.rsync_optionsObject



87
88
89
90
# File 'lib/capistrano/bundle_rsync/config.rb', line 87

def self.rsync_options
  bwlimit = fetch(:bundle_rsync_rsync_bwlimit) ? " --bwlimit #{fetch(:bundle_rsync_rsync_bwlimit)}" : ""
  fetch(:bundle_rsync_rsync_options) || "-az --delete#{bwlimit}"
end

.shared_dirsObject



28
29
30
31
# File 'lib/capistrano/bundle_rsync/config.rb', line 28

def self.shared_dirs
  return nil unless shared_dirs = fetch(:bundle_rsync_shared_dirs)
  shared_dirs.is_a?(Array) ? shared_dirs : [shared_dirs]
end

.skip_bundleObject



92
93
94
# File 'lib/capistrano/bundle_rsync/config.rb', line 92

def self.skip_bundle
  fetch(:bundle_rsync_skip_bundle)
end