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 +5 -5
- data/lib/eac_ruby_utils/envs/ssh_env.rb +39 -4
- data/lib/eac_ruby_utils/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5039f5c4f347e71881361fb3bcc462ebd88ee5bcd0140a677be9583591a34d40
|
4
|
+
data.tar.gz: 29e602fb349f046175a50b770433eccf92070aec71c8d7d8a3b41976254669d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
5
|
-
|
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
|
-
|
26
|
+
uri.to_s
|
10
27
|
end
|
11
28
|
|
12
29
|
def command_line(line)
|
13
|
-
"
|
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
|
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.
|
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
|
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.
|
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.
|