Class: Tomo::Plugin::Core::Tasks

Inherits:
TaskLibrary show all
Defined in:
lib/tomo/plugin/core/tasks.rb

Instance Method Summary collapse

Methods inherited from TaskLibrary

#initialize

Constructor Details

This class inherits a constructor from Tomo::TaskLibrary

Instance Method Details

#clean_releasesObject

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 # rubocop:disable Metrics/AbcSize
  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_revisionObject

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 # rubocop:disable Metrics/AbcSize
  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_directoriesObject



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


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


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_jsonObject



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