File: support.rb

package info (click to toggle)
ruby-whenever 1.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 328 kB
  • sloc: ruby: 2,722; makefile: 2
file content (53 lines) | stat: -rw-r--r-- 1,531 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
module Whenever
  module CapistranoSupport
    def self.load_into(capistrano_configuration)
      capistrano_configuration.load do

        def whenever_options
          fetch(:whenever_options)
        end

        def whenever_roles
          Array(whenever_options[:roles])
        end

        def whenever_servers
          find_servers(whenever_options)
        end

        def whenever_server_roles
          whenever_servers.inject({}) do |map, server|
            map[server] = role_names_for_host(server) & whenever_roles
            map
          end
        end

        def whenever_prepare_for_rollback args
          if fetch(:previous_release)
            # rollback to the previous release's crontab
            args[:path] = fetch(:previous_release)
          else
            # clear the crontab if no previous release
            args[:path]  = fetch(:release_path)
            args[:flags] = fetch(:whenever_clear_flags)
          end
          args
        end

        def whenever_run_commands(args)
          unless [:command, :path, :flags].all? { |a| args.include?(a) }
            raise ArgumentError, ":command, :path, & :flags are required"
          end

          whenever_server_roles.each do |server, roles|
            roles_arg = roles.empty? ? "" : " --roles #{roles.join(',')}"

            command = "cd #{args[:path]} && #{args[:command]} #{args[:flags]}#{roles_arg}"
            run command, whenever_options.merge(:hosts => server)
          end
        end

      end
    end
  end
end