Class: Tomo::Plugin::Core::Tasks
Instance Method Summary
collapse
Methods inherited from TaskLibrary
#initialize
Instance Method Details
#clean_releases ⇒ Object
rubocop:disable Metrics/AbcSize
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/tomo/plugin/core/tasks.rb', line 39
def clean_releases desired_count = settings[:keep_releases].to_i
return if desired_count < 1
current = read_current_release
remote.chdir(paths.releases) do
releases = remote.list_files.grep(/^#{RELEASE_REGEXP}$/o).sort
desired_count -= 1 if releases.delete(current)
return if releases.length <= desired_count
remote.rm_rf(*releases.take(releases.length - desired_count))
end
end
|
#log_revision ⇒ Object
rubocop:disable Metrics/AbcSize
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/tomo/plugin/core/tasks.rb', line 59
def log_revision ref = remote.release[:ref]
revision = remote.release[:revision]
message = remote.release[:deploy_date].to_s
message << " - #{revision || '<unknown>'}"
message << " (#{ref})" if ref && revision && !revision.start_with?(ref)
message << " deployed by #{remote.release[:deploy_user] || '<unknown>'}"
message << "\n"
remote.write(text: message, to: paths.revision_log, append: true)
end
|
#setup_directories ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/tomo/plugin/core/tasks.rb', line 11
def setup_directories
dirs = [
paths.deploy_to,
paths.current.dirname,
paths.releases,
paths.revision_log.dirname,
paths.shared
].map(&:to_s).uniq
remote.mkdir_p(*dirs)
end
|
#symlink_current ⇒ Object
31
32
33
34
35
36
37
|
# File 'lib/tomo/plugin/core/tasks.rb', line 31
def symlink_current
return if paths.release == paths.current
tmp_link = "#{paths.current}-#{SecureRandom.hex(8)}"
remote.ln_sf paths.release, tmp_link
remote.run "mv", "-fT", tmp_link, paths.current
end
|
#symlink_shared ⇒ Object
23
24
25
26
27
28
29
|
# File 'lib/tomo/plugin/core/tasks.rb', line 23
def symlink_shared
return if linked_dirs.empty? && linked_files.empty?
remote.mkdir_p(*shared_directories, *link_dirnames)
symlink_shared_directories
symlink_shared_files
end
|
#write_release_json ⇒ Object
54
55
56
57
|
# File 'lib/tomo/plugin/core/tasks.rb', line 54
def write_release_json
json = JSON.pretty_generate(remote.release)
remote.write(text: "#{json}\n", to: paths.release_json)
end
|