Method: DO::Commands#server

Defined in:
lib/do/commands.rb

#server(name, host, user, options = {}) ⇒ Object

This method define our servers

Examples:

keys = %w[key1.pem key2.pem key3.pem key4.pem]
server :srv1, 's1.domain.local', 'user', :keys => keys
server :srv2, 's2.domain.local', 'user', :keys => keys
server :srv3, 's3.domain.local', 'user', :keys => keys
server :srv4, 's4.domain.local', 'user', :keys => keys


70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/do/commands.rb', line 70

def server(name, host, user, options={})
  servers.push(DO::Server.new(name, host, user, options))
  task name do |opts, b|
    allowed  = opts.map { |k,v| k if remote.include?(k) && v }.compact
    denied   = opts.map { |k,v| k if remote.include?(k) && v == false }.compact
    if (allowed.empty? && denied.empty?) ||
       (!allowed.empty? && allowed.include?(name)) ||
       (!denied.empty? && !denied.include?(name))
      @_current_server = servers.find { |s| s.name == name }
      begin
        b.arity == 1 ? b.call(opts) : b.call
      ensure
        @_current_server = nil
      end
    end
  end
end