sshkit 1.11.3 → 1.11.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -1
- data/lib/sshkit/backends/abstract.rb +1 -1
- data/lib/sshkit/command.rb +2 -2
- data/lib/sshkit/host.rb +14 -17
- data/lib/sshkit/version.rb +1 -1
- data/test/unit/test_command.rb +6 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1be4ae412e0c02545ceaa90409ec6f4d04b8db6e
|
4
|
+
data.tar.gz: 5f2fa57fbd2d8a7ddd470f6775abc5a2accea2cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b85b42a0de7970b0507244a799bea1baa8cba179d3af3e76f2a4d90d43ba11d62099dc9981800d62b38eb4ae38fdcf5b4662835ce3ab4b10bfdc4e5c108b9e4
|
7
|
+
data.tar.gz: c7776b71095e7ca183db2a96b4e358bd164ee8fce708fdd84d11cd2ddfd8be1570d9d696d82f9d8af47efddd86c3d0aa1e31b54fb41492f7f7ef8e24acd07b54
|
data/CHANGELOG.md
CHANGED
@@ -8,6 +8,13 @@ appear at the top.
|
|
8
8
|
* Add your entries below here, remember to credit yourself however you want
|
9
9
|
to be credited!
|
10
10
|
|
11
|
+
## [1.11.4][] (2016-11-02)
|
12
|
+
|
13
|
+
* Use string interpolation for environment variables to avoid escaping issues
|
14
|
+
with sprintf
|
15
|
+
[PR #280](https://github.com/capistrano/sshkit/pull/280)
|
16
|
+
@Sinjo - Chris Sinjakli
|
17
|
+
|
11
18
|
## [1.11.3][] (2016-09-16)
|
12
19
|
|
13
20
|
* Fix known_hosts caching to match on the entire hostlist
|
@@ -649,7 +656,8 @@ version `0.0.5`.
|
|
649
656
|
|
650
657
|
First release.
|
651
658
|
|
652
|
-
[Unreleased]: https://github.com/capistrano/sshkit/compare/v1.11.
|
659
|
+
[Unreleased]: https://github.com/capistrano/sshkit/compare/v1.11.4...HEAD
|
660
|
+
[1.11.4]: https://github.com/capistrano/sshkit/compare/v1.11.3...v1.11.4
|
653
661
|
[1.11.3]: https://github.com/capistrano/sshkit/compare/v1.11.2...v1.11.3
|
654
662
|
[1.11.2]: https://github.com/capistrano/sshkit/compare/v1.11.1...v1.11.2
|
655
663
|
[1.11.1]: https://github.com/capistrano/sshkit/compare/v1.11.0...v1.11.1
|
@@ -150,7 +150,7 @@ module SSHKit
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def command(args, options)
|
153
|
-
SSHKit::Command.new(*
|
153
|
+
SSHKit::Command.new(*args, options.merge({in: pwd_path, env: @env, host: @host, user: @user, group: @group}))
|
154
154
|
end
|
155
155
|
|
156
156
|
end
|
data/lib/sshkit/command.rb
CHANGED
@@ -163,12 +163,12 @@ module SSHKit
|
|
163
163
|
|
164
164
|
def with(&_block)
|
165
165
|
return yield unless environment_hash.any?
|
166
|
-
|
166
|
+
"( export #{environment_string} ; #{yield} )"
|
167
167
|
end
|
168
168
|
|
169
169
|
def user(&_block)
|
170
170
|
return yield unless options[:user]
|
171
|
-
"sudo -u #{options[:user]} #{environment_string + " " unless environment_string.empty?}-- sh -c '
|
171
|
+
"sudo -u #{options[:user]} #{environment_string + " " unless environment_string.empty?}-- sh -c '#{yield}'"
|
172
172
|
end
|
173
173
|
|
174
174
|
def in_background(&_block)
|
data/lib/sshkit/host.rb
CHANGED
@@ -29,23 +29,7 @@ module SSHKit
|
|
29
29
|
@hostname = "localhost"
|
30
30
|
@user = ENV['USER'] || ENV['LOGNAME'] || ENV['USERNAME']
|
31
31
|
elsif !host_string_or_options_hash.is_a?(Hash)
|
32
|
-
|
33
|
-
SimpleHostParser,
|
34
|
-
HostWithPortParser,
|
35
|
-
HostWithUsernameAndPortParser,
|
36
|
-
IPv6HostWithPortParser,
|
37
|
-
HostWithUsernameParser,
|
38
|
-
].select do |p|
|
39
|
-
p.suitable?(host_string_or_options_hash)
|
40
|
-
end
|
41
|
-
|
42
|
-
if suitable_parsers.any?
|
43
|
-
suitable_parsers.first.tap do |parser|
|
44
|
-
@user, @hostname, @port = parser.new(host_string_or_options_hash).attributes
|
45
|
-
end
|
46
|
-
else
|
47
|
-
raise UnparsableHostStringError, "Cannot parse host string #{host_string_or_options_hash}"
|
48
|
-
end
|
32
|
+
@user, @hostname, @port = first_suitable_parser(host_string_or_options_hash).attributes
|
49
33
|
else
|
50
34
|
host_string_or_options_hash.each do |key, value|
|
51
35
|
if self.respond_to?("#{key}=")
|
@@ -94,6 +78,11 @@ module SSHKit
|
|
94
78
|
@properties ||= OpenStruct.new
|
95
79
|
end
|
96
80
|
|
81
|
+
def first_suitable_parser(host)
|
82
|
+
parser = PARSERS.find{|p| p.suitable?(host) }
|
83
|
+
fail UnparsableHostStringError, "Cannot parse host string #{host}" if parser.nil?
|
84
|
+
parser.new(host)
|
85
|
+
end
|
97
86
|
end
|
98
87
|
|
99
88
|
# @private
|
@@ -192,4 +181,12 @@ module SSHKit
|
|
192
181
|
end
|
193
182
|
end
|
194
183
|
|
184
|
+
PARSERS = [
|
185
|
+
SimpleHostParser,
|
186
|
+
HostWithPortParser,
|
187
|
+
HostWithUsernameAndPortParser,
|
188
|
+
IPv6HostWithPortParser,
|
189
|
+
HostWithUsernameParser,
|
190
|
+
].freeze
|
191
|
+
|
195
192
|
end
|
data/lib/sshkit/version.rb
CHANGED
data/test/unit/test_command.rb
CHANGED
@@ -49,6 +49,12 @@ module SSHKit
|
|
49
49
|
assert_equal %{( export FOO="asdf\\\"hjkl" ; /usr/bin/env rails server )}, c.to_command
|
50
50
|
end
|
51
51
|
|
52
|
+
def test_percentage_symbol_handled_in_env
|
53
|
+
SSHKit.config = nil
|
54
|
+
c = Command.new(:rails, 'server', env: {foo: 'asdf%hjkl'}, user: "anotheruser")
|
55
|
+
assert_equal %{( export FOO="asdf%hjkl" ; sudo -u anotheruser FOO=\"asdf%hjkl\" -- sh -c '/usr/bin/env rails server' )}, c.to_command
|
56
|
+
end
|
57
|
+
|
52
58
|
def test_including_the_env_doesnt_addressively_escape
|
53
59
|
SSHKit.config = nil
|
54
60
|
c = Command.new(:rails, 'server', env: {path: '/example:$PATH'})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sshkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.11.
|
4
|
+
version: 1.11.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lee Hambley
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-11-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: net-ssh
|
@@ -219,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
219
|
version: '0'
|
220
220
|
requirements: []
|
221
221
|
rubyforge_project:
|
222
|
-
rubygems_version: 2.6.
|
222
|
+
rubygems_version: 2.6.7
|
223
223
|
signing_key:
|
224
224
|
specification_version: 4
|
225
225
|
summary: SSHKit makes it easy to write structured, testable SSH commands in Ruby
|