eac_ruby_utils 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3b0b5ef098921d30e344ef1a171ac78d73ac7211
4
- data.tar.gz: 5371f658aff9733d7188a5d2af8849116e645f36
2
+ SHA256:
3
+ metadata.gz: 5039f5c4f347e71881361fb3bcc462ebd88ee5bcd0140a677be9583591a34d40
4
+ data.tar.gz: 29e602fb349f046175a50b770433eccf92070aec71c8d7d8a3b41976254669d3
5
5
  SHA512:
6
- metadata.gz: a8b331f6653deff846c6fccaf5adac0841d35a910f09767498d6fd6647cafdaf32dc597459c8183f697c035694977d7bbcf636701622df747ec805e852c8245f
7
- data.tar.gz: 8d6c858e2aa27688bb3c758a8572b53c3a31e6395aae94b4922c730a173b27a41fe7b14fcbca677e10514f448ab4c7d984e67379f1e7ec655956d86f86c8cdaf
6
+ metadata.gz: 1661013b929f15161d7288505dd7afa52e4f29354a7788d4f1adff038e804bb11c4c6ef7f3b1cf10f959bdda299617247a88125c106b75501adc6edcbc5531f6
7
+ data.tar.gz: 9fabf390c9845c25b059b4321858d17ab7ee57f36c6ccfd6b7be977c5dac1f97b20a82ad35e11b5e633e5e7c53a14a804f5833fe4f1d66590994c36e0c1ede7b
@@ -1,16 +1,51 @@
1
1
  module EacRubyUtils
2
2
  module Envs
3
3
  class SshEnv < ::EacRubyUtils::Envs::BaseEnv
4
- def initialize(user_hostname)
5
- @user_hostname = user_hostname
4
+ class << self
5
+ def parse_uri(uri)
6
+ r = parse_user_hostname(uri) || ::Addressable::URI.parse(uri)
7
+ return r if r.scheme == 'ssh'
8
+ raise "URI has no SSH scheme: #{uri}"
9
+ end
10
+
11
+ private
12
+
13
+ def parse_user_hostname(s)
14
+ m = /\A([^@]+)@([^@]+)\z/.match(s)
15
+ m ? ::Addressable::URI.new(scheme: 'ssh', host: m[2], user: m[1]) : nil
16
+ rescue Addressable::URI::InvalidURIError
17
+ nil
18
+ end
19
+ end
20
+
21
+ def initialize(uri)
22
+ @uri = self.class.parse_uri(uri)
6
23
  end
7
24
 
8
25
  def to_s
9
- "SSH(#{@user_hostname})"
26
+ uri.to_s
10
27
  end
11
28
 
12
29
  def command_line(line)
13
- "ssh #{Shellwords.escape(@user_hostname)} #{Shellwords.escape(line)}"
30
+ "#{ssh_command_line} #{Shellwords.escape(line)}"
31
+ end
32
+
33
+ private
34
+
35
+ attr_reader :uri
36
+
37
+ def ssh_command_line
38
+ r = %w[ssh]
39
+ r += ['-p', uri.port] if uri.port.present?
40
+ r += ssh_command_line_options
41
+ r << "#{uri.user}@#{uri.host}"
42
+ r.map { |a| Shellwords.escape(a) }.join(' ')
43
+ end
44
+
45
+ def ssh_command_line_options
46
+ r = []
47
+ uri.query_values.each { |k, v| r += ['-o', "#{k}=#{v}"] } if uri.query_values
48
+ r
14
49
  end
15
50
  end
16
51
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.1.2'.freeze
4
+ VERSION = '0.2.0'.freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_ruby_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-17 00:00:00.000000000 Z
11
+ date: 2018-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  version: '0'
90
90
  requirements: []
91
91
  rubyforge_project:
92
- rubygems_version: 2.6.14
92
+ rubygems_version: 2.7.7
93
93
  signing_key:
94
94
  specification_version: 4
95
95
  summary: Utilities for E.A.C.'s Ruby projects.