Sha256: f0a1f579253b72315ac5b3c995e823baaf1c3d290cf92d11d35a6b2876157601

Contents?: true

Size: 1.35 KB

Versions: 83

Compression:

Stored size: 1.35 KB

Contents

module Capistrano
  class ServerDefinition
    include Comparable

    attr_reader :host
    attr_reader :user
    attr_reader :port
    attr_reader :options

    # The default user name to use when a user name is not explicitly provided
    def self.default_user
      ENV['USER'] || ENV['USERNAME'] || "not-specified"
    end

    def initialize(string, options={})
      @user, @host, @port = string.match(/^(?:([^;,:=]+)@|)(.*?)(?::(\d+)|)$/)[1,3]

      @options = options.dup
      user_opt, port_opt = @options.delete(:user), @options.delete(:port)

      @user ||= user_opt
      @port ||= port_opt

      @port = @port.to_i if @port
    end

    def <=>(server)
      [host, port, user] <=> [server.host, server.port, server.user]
    end

    # Redefined, so that Array#uniq will work to remove duplicate server
    # definitions, based solely on their host names.
    def eql?(server)
      host == server.host &&
        user == server.user &&
        port == server.port
    end

    alias :== :eql?

    # Redefined, so that Array#uniq will work to remove duplicate server
    # definitions, based on their connection information.
    def hash
      @hash ||= [host, user, port].hash
    end

    def to_s
      @to_s ||= begin
        s = host
        s = "#{user}@#{s}" if user
        s = "#{s}:#{port}" if port && port != 22
        s
      end
    end
  end
end

Version data entries

83 entries across 83 versions & 10 rubygems

Version Path
wulffeld-capistrano-2.5.8.3 lib/capistrano/server_definition.rb
capistrano-2.5.22 lib/capistrano/server_definition.rb
dan-capistrano-2.5.6 lib/capistrano/server_definition.rb
fotonauts-capistrano-2.5.2 lib/capistrano/server_definition.rb
mbailey-capistrano-2.5.5 lib/capistrano/server_definition.rb
mbailey-capistrano-2.5.6 lib/capistrano/server_definition.rb
mbailey-capistrano-2.5.7 lib/capistrano/server_definition.rb
sneakin-capistrano-2.5.5 lib/capistrano/server_definition.rb
thoughtbot-capistrano-2.5.5 lib/capistrano/server_definition.rb
thoughtbot-capistrano-2.5.6 lib/capistrano/server_definition.rb
wulffeld-capistrano-2.5.8.1 lib/capistrano/server_definition.rb
wulffeld-capistrano-2.5.8 lib/capistrano/server_definition.rb
capistrano-2.14.2 lib/capistrano/server_definition.rb
capistrano-2.14.1 lib/capistrano/server_definition.rb
capistrano-2.13.5 lib/capistrano/server_definition.rb
HeSYINUvSBZfxqA-capistrano-2.5.28 lib/capistrano/server_definition.rb
HeSYINUvSBZfxqA-capistrano-2.5.27 lib/capistrano/server_definition.rb
HeSYINUvSBZfxqA-capistrano-2.5.26 lib/capistrano/server_definition.rb
HeSYINUvSBZfxqA-capistrano-2.5.25 lib/capistrano/server_definition.rb
HeSYINUvSBZfxqA-capistrano-2.5.24 lib/capistrano/server_definition.rb