Sha256: 38f2953966eb40e559af1cee91898e71375355af63ba35eb47fac0a90f1f935e

Contents?: true

Size: 1.35 KB

Versions: 13

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

13 entries across 13 versions & 2 rubygems

Version Path
capistrano-2.15.11 lib/capistrano/server_definition.rb
capistrano-2.15.10 lib/capistrano/server_definition.rb
capistrano-2.15.9 lib/capistrano/server_definition.rb
capistrano-2.15.8 lib/capistrano/server_definition.rb
capistrano-2.15.7 lib/capistrano/server_definition.rb
capistrano-2.15.6 lib/capistrano/server_definition.rb
capistrano-2.15.5 lib/capistrano/server_definition.rb
minmb-capistrano-2.15.4 lib/capistrano/server_definition.rb
capistrano-2.15.4 lib/capistrano/server_definition.rb
capistrano-2.15.3 lib/capistrano/server_definition.rb
capistrano-2.15.2 lib/capistrano/server_definition.rb
capistrano-2.15.0 lib/capistrano/server_definition.rb
capistrano-2.15.1 lib/capistrano/server_definition.rb