# File lib/luban/deployment/configuration/filter.rb, line 18 def primary(role) servers.find_primary(role) end
class Luban::Deployment::Configuration
Attributes
servers[R]
variables[R]
Public Class Methods
new()
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 7 def initialize @variables = {} @servers = ServerSet.new end
Public Instance Methods
ask(key=nil, default:, prompt: nil, echo: true)
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 55 def ask(key=nil, default:, prompt: nil, echo: true) Question.new(default: default, prompt: prompt, echo: echo).call.tap do |answer| set(key, answer) unless key.nil? end end
delete(key)
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 20 def delete(key) @variables[key] = value end
fetch(key, default = nil, &blk)
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 24 def fetch(key, default = nil, &blk) value = if block_given? @variables.fetch(key, &blk) else @variables.fetch(key, default) end while callable_without_parameters?(value) value = set(key, value.call) end return value end
has_key?(key)
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 40 def has_key?(key) @variables.has_key?(key) end
keys()
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 36 def keys @variables.keys end
primary(role)
click to toggle source
release_roles(*names)
click to toggle source
# File lib/luban/deployment/configuration/filter.rb, line 9 def release_roles(*names) if names.last.is_a?(Hash) names.last.merge(:exclude => :no_release) else names << { :exclude => :no_release } end roles(*names) end
role(name, hosts, **properties)
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 44 def role(name, hosts, **properties) if name == :all raise ArgumentError, 'Reserved role name, :all, is NOT allowed to use.' end servers.add_hosts_for_role(name, hosts, properties) end
roles(*names)
click to toggle source
# File lib/luban/deployment/configuration/filter.rb, line 4 def roles(*names) opts = names.last.is_a?(::Hash) ? names.pop : {} filter_servers(servers.find_by_roles(filter_roles(names), opts)) end
server(name, **properties)
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 51 def server(name, **properties) servers.add_host(name, properties) end
set(key, value)
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 12 def set(key, value) @variables[key] = value end
set_default(key, value)
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 16 def set_default(key, value) set(key, value) if @variables[key].nil? end
Protected Instance Methods
callable_without_parameters?(x)
click to toggle source
# File lib/luban/deployment/configuration/core.rb, line 63 def callable_without_parameters?(x) x.respond_to?(:call) && (!x.respond_to?(:arity) || x.arity == 0) end
config_filter(type)
click to toggle source
# File lib/luban/deployment/configuration/filter.rb, line 48 def config_filter(type) filter = fetch(:filter) || fetch(:select) filter.nil? ? [] : filter.fetch(type, []) end
env_filter(type)
click to toggle source
# File lib/luban/deployment/configuration/filter.rb, line 43 def env_filter(type) type = type.to_s.upcase ENV[type].nil? ? [] : ENV[type].split(',') end
filter_roles(_roles)
click to toggle source
# File lib/luban/deployment/configuration/filter.rb, line 24 def filter_roles(_roles) available_roles = (env_filter(:roles) | config_filter(:roles)).map(&:to_sym) available_roles = servers.available_roles if available_roles.empty? if _roles.include?(:all) available_roles else _roles.select { |name| available_roles.include?(name) } end end
filter_servers(_servers)
click to toggle source
# File lib/luban/deployment/configuration/filter.rb, line 34 def filter_servers(_servers) filter_hosts = env_filter(:hosts) | config_filter(:hosts) if filter_hosts.empty? _servers else _servers.select { |server| filter_hosts.include?(server.hostname) } end end