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
- .all_hosts(servers) ⇒ Object
- .extract_hosts(entry) ⇒ Object
- .hosts_for_role(servers, role) ⇒ Object
- .role_names(servers) ⇒ Object
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 |