Class: EacRubyUtils::Envs::SshEnv

Inherits:
BaseEnv show all
Defined in:
lib/eac_ruby_utils/envs/ssh_env.rb

Constant Summary collapse

IDENTITITY_FILE_OPTION =
'IdentityFile'
USER_PATTERN =
/[a-z_][a-z0-9_-]*/.freeze
HOSTNAME_PATTERN =
/[^@]+/.freeze
USER_HOSTNAME_PATTERN =
/\A(?:(#{USER_PATTERN})@)?(#{HOSTNAME_PATTERN})\z/.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseEnv

#command, #executable, #file, #file_exist?

Constructor Details

#initialize(uri) ⇒ SshEnv

Returns a new instance of SshEnv.



39
40
41
# File 'lib/eac_ruby_utils/envs/ssh_env.rb', line 39

def initialize(uri)
  @uri = self.class.parse_uri(uri).freeze
end

Instance Attribute Details

#uriObject (readonly)

Returns the value of attribute uri.



37
38
39
# File 'lib/eac_ruby_utils/envs/ssh_env.rb', line 37

def uri
  @uri
end

Class Method Details

.parse_uri(uri) ⇒ Object



18
19
20
# File 'lib/eac_ruby_utils/envs/ssh_env.rb', line 18

def parse_uri(uri)
  uri_by_url(uri) || uri_by_user_hostname(uri) || raise("URI has no SSH scheme: #{uri}")
end

Instance Method Details

#command_line(line) ⇒ Object



47
48
49
# File 'lib/eac_ruby_utils/envs/ssh_env.rb', line 47

def command_line(line)
  "#{ssh_command_line} #{Shellwords.escape(line)}"
end

#to_sObject



43
44
45
# File 'lib/eac_ruby_utils/envs/ssh_env.rb', line 43

def to_s
  uri.to_s
end