eac_ruby_utils 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.