Module: Kamal::Lint::ServersHelper

Defined in:
lib/kamal/lint/servers_helper.rb

Overview

Helpers for walking ‘servers:` in its various shapes:

servers: [host1, host2]                            → implicit "web" role
servers: { web: [...], workers: [...] }            → role => hosts
servers: { web: { hosts: [...], cmd: ..., ... } }  → role => expanded

Class Method Summary collapse

Class Method Details

.all_hosts(servers) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/kamal/lint/servers_helper.rb', line 36

def all_hosts(servers)
  case servers
  when Array
    servers.dup
  when Hash
    servers.values.flat_map { |v| extract_hosts(v) }
  else
    []
  end
end

.extract_hosts(entry) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
# File 'lib/kamal/lint/servers_helper.rb', line 47

def extract_hosts(entry)
  case entry
  when Array
    entry
  when Hash
    hosts = entry["hosts"] || entry[:hosts] || []
    hosts.is_a?(Array) ? hosts : [ hosts ].compact
  else
    []
  end
end

.hosts_for_role(servers, role) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/kamal/lint/servers_helper.rb', line 24

def hosts_for_role(servers, role)
  case servers
  when Array
    role == "web" ? servers.dup : []
  when Hash
    entry = servers[role] || servers[role.to_sym]
    extract_hosts(entry)
  else
    []
  end
end

.role_names(servers) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/kamal/lint/servers_helper.rb', line 13

def role_names(servers)
  case servers
  when Array
    [ "web" ]
  when Hash
    servers.keys.map(&:to_s)
  else
    []
  end
end