class EacRubyUtils::Envs::SshEnv
Constants
- HOSTNAME_PATTERN
- USER_HOSTNAME_PATTERN
- USER_PATTERN
Attributes
uri[R]
Public Class Methods
new(uri)
click to toggle source
# File lib/eac_ruby_utils/envs/ssh_env.rb, line 41 def initialize(uri) @uri = self.class.parse_uri(uri).freeze end
parse_uri(uri)
click to toggle source
# File lib/eac_ruby_utils/envs/ssh_env.rb, line 20 def parse_uri(uri) uri_by_url(uri) || uri_by_user_hostname(uri) || raise("URI has no SSH scheme: #{uri}") end
Private Class Methods
uri_by_url(url)
click to toggle source
# File lib/eac_ruby_utils/envs/ssh_env.rb, line 26 def uri_by_url(url) r = ::Addressable::URI.parse(url) r.scheme == 'ssh' && r.host.present? ? r : nil end
uri_by_user_hostname(user_hostname)
click to toggle source
# File lib/eac_ruby_utils/envs/ssh_env.rb, line 31 def uri_by_user_hostname(user_hostname) m = USER_HOSTNAME_PATTERN.match(user_hostname) m ? ::Addressable::URI.new(scheme: 'ssh', host: m[2], user: m[1]) : nil rescue Addressable::URI::InvalidURIError nil end
Public Instance Methods
command_line(line)
click to toggle source
# File lib/eac_ruby_utils/envs/ssh_env.rb, line 49 def command_line(line) "#{ssh_command_line} #{Shellwords.escape(line)}" end
to_s()
click to toggle source
# File lib/eac_ruby_utils/envs/ssh_env.rb, line 45 def to_s uri.to_s end
Private Instance Methods
ssh_command_line()
click to toggle source
# File lib/eac_ruby_utils/envs/ssh_env.rb, line 55 def ssh_command_line (%w[ssh] + %w[nodasho dasho port].flat_map { |m| send("ssh_command_line_#{m}_args") } + [user_hostname_uri]) .map { |a| Shellwords.escape(a) }.join(' ') end
ssh_command_line_port_args()
click to toggle source
# File lib/eac_ruby_utils/envs/ssh_env.rb, line 62 def ssh_command_line_port_args uri.port.if_present([]) do |v| ['-p', v] end end
user_hostname_uri()
click to toggle source
# File lib/eac_ruby_utils/envs/ssh_env.rb, line 68 def user_hostname_uri r = uri.host r = "#{uri.user}@#{r}" if uri.user.present? r end