sshkit 1.14.0 → 1.15.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
2
  SHA1:
3
- metadata.gz: b21b9fc05481526fd6470265cb3afb51fcc0691a
4
- data.tar.gz: 4a093de329e546b6410c01c03ab8fe8379c8c53f
3
+ metadata.gz: 45f49f25df22edea1abf8c5db3edda63255ddbb2
4
+ data.tar.gz: 71642fd8de408f19d9e40fad80ce7315ca553235
5
5
  SHA512:
6
- metadata.gz: 7f7ba415cd0b373c356ab99e1ca0624bcca5265c328e2b060def73684541eaf041b539162779a7463691428162e5758bcc025bbe8c6966f3deca4cb95aaa9f8e
7
- data.tar.gz: f2907bc157c0cacfa2309725aa637deff3bf43079b5dbe255c7d00049997f46cdb574823d8ee8bd848c6e12b24a0c5bb02d8ed66e8196bb87d5fff2b14c41380
6
+ metadata.gz: 2483400c0e519f6ea60432371a04d77c523a965db7cf117c611056aa052f87125ccb605ec1ae241bec4f24ec1e75f03ef2927dce8d0a64757147a4fe0ce8e4f0
7
+ data.tar.gz: 360df78c26c2e413e54d02f0152279f968f25ad3373e3f0fd36086d6bc867f1aa473937e84e7be0602047307042c45426d35833e8c0c5be803da243d95ced76b
@@ -7,6 +7,20 @@ appear at the top.
7
7
 
8
8
  * Your contribution here!
9
9
 
10
+ ## [1.15.0][] (2017-11-03)
11
+
12
+ ### New features
13
+
14
+ * [#408](https://github.com/capistrano/sshkit/pull/408): upload! and download! now respect `within` - [@sj26](https://github.com/sj26)
15
+
16
+ ### Potentially breaking changes
17
+
18
+ * `upload!` and `download!` now support remote paths which are
19
+ relative to the `within` working directory. They were previously documented
20
+ as only supporting absolute paths, but relative paths still worked relative
21
+ to the remote working directory. If you rely on the previous behaviour you
22
+ may need to adjust your code.
23
+
10
24
  ## [1.14.0][] (2017-06-30)
11
25
 
12
26
  ### Breaking changes
@@ -707,7 +721,8 @@ version `0.0.5`.
707
721
 
708
722
  First release.
709
723
 
710
- [Unreleased]: https://github.com/capistrano/sshkit/compare/v1.14.0...HEAD
724
+ [Unreleased]: https://github.com/capistrano/sshkit/compare/v1.15.0...HEAD
725
+ [1.15.0]: https://github.com/capistrano/sshkit/compare/v1.14.0...v1.15.0
711
726
  [1.14.0]: https://github.com/capistrano/sshkit/compare/v1.13.1...v1.14.0
712
727
  [1.13.1]: https://github.com/capistrano/sshkit/compare/v1.13.0...v1.13.1
713
728
  [1.13.0]: https://github.com/capistrano/sshkit/compare/v1.12.0...v1.13.0
@@ -90,6 +90,7 @@ end
90
90
  ```
91
91
 
92
92
  ## Download a file from disk
93
+
93
94
  ```ruby
94
95
  on roles(:all) do
95
96
  puts 'Downloading DB Backup File'
@@ -106,8 +107,18 @@ on hosts do |host|
106
107
  end
107
108
  ```
108
109
 
109
- **Note:** The `upload!()` method doesn't honor the values of `within()`, `as()`
110
- etc, this will be improved as the library matures, but we're not there yet.
110
+ Upload and download will respect the `within()` directories:
111
+
112
+ ```ruby
113
+ on hosts do |host|
114
+ within 'my/app/directory' do
115
+ upload! 'database.yml', 'config/database.yml'
116
+ end
117
+ end
118
+ ```
119
+
120
+ **Note:** The `upload!()` method doesn't honor the values of `as()` etc, this
121
+ will be improved as the library matures, but we're not there yet.
111
122
 
112
123
  ## Upload a file from a stream
113
124
 
data/Gemfile CHANGED
@@ -13,3 +13,8 @@ end
13
13
  if Gem::Requirement.new('>= 2.1.0').satisfied_by?(Gem::Version.new(RUBY_VERSION))
14
14
  gem 'chandler', '>= 0.1.1'
15
15
  end
16
+
17
+ # public_suffix 3+ requires ruby 2.1+
18
+ if Gem::Requirement.new('< 2.1').satisfied_by?(Gem::Version.new(RUBY_VERSION))
19
+ gem 'public_suffix', '< 3'
20
+ end
@@ -11,6 +11,7 @@ module SSHKit
11
11
  end
12
12
 
13
13
  def upload!(local, remote, options = {})
14
+ remote = File.join(pwd_path, remote) unless remote.start_with?("/")
14
15
  if local.is_a?(String)
15
16
  if options[:recursive]
16
17
  FileUtils.cp_r(local, remote)
@@ -25,6 +26,7 @@ module SSHKit
25
26
  end
26
27
 
27
28
  def download!(remote, local=nil, _options = {})
29
+ remote = File.join(pwd_path, remote) unless remote.start_with?("/")
28
30
  if local.nil?
29
31
  FileUtils.cp(remote, File.basename(remote))
30
32
  else
@@ -63,6 +63,7 @@ module SSHKit
63
63
 
64
64
  def upload!(local, remote, options = {})
65
65
  summarizer = transfer_summarizer('Uploading', options)
66
+ remote = File.join(pwd_path, remote) unless remote.start_with?("/")
66
67
  with_ssh do |ssh|
67
68
  ssh.scp.upload!(local, remote, options, &summarizer)
68
69
  end
@@ -70,6 +71,7 @@ module SSHKit
70
71
 
71
72
  def download!(remote, local=nil, options = {})
72
73
  summarizer = transfer_summarizer('Downloading', options)
74
+ remote = File.join(pwd_path, remote) unless remote.start_with?("/")
73
75
  with_ssh do |ssh|
74
76
  ssh.scp.download!(remote, local, options, &summarizer)
75
77
  end
@@ -1,3 +1,3 @@
1
1
  module SSHKit
2
- VERSION = "1.14.0".freeze
2
+ VERSION = "1.15.0".freeze
3
3
  end
@@ -20,6 +20,23 @@ module SSHKit
20
20
  end
21
21
  end
22
22
 
23
+ def test_upload_within
24
+ file_contents = "Some Content"
25
+ actual_file_contents = nil
26
+ Dir.mktmpdir do |dir|
27
+ Local.new do
28
+ within dir do
29
+ execute(:mkdir, "-p", "foo")
30
+ within "foo" do
31
+ upload!(StringIO.new(file_contents), "bar")
32
+ end
33
+ end
34
+ actual_file_contents = capture(:cat, File.join(dir, "foo", "bar"))
35
+ end.run
36
+ assert_equal file_contents, actual_file_contents
37
+ end
38
+ end
39
+
23
40
  def test_upload_recursive
24
41
  Dir.mktmpdir do |dir|
25
42
  Dir.mkdir("#{dir}/local")
@@ -103,6 +103,23 @@ module SSHKit
103
103
  assert_equal "Some Content\nWith a newline and trailing spaces \n ", actual_file_contents
104
104
  end
105
105
 
106
+ def test_upload_within
107
+ file_name = SecureRandom.uuid
108
+ file_contents = "Some Content"
109
+ dir_name = SecureRandom.uuid
110
+ actual_file_contents = ""
111
+ Netssh.new(a_host) do |_host|
112
+ within("/tmp") do
113
+ execute :mkdir, "-p", dir_name
114
+ within(dir_name) do
115
+ upload!(StringIO.new(file_contents), file_name)
116
+ end
117
+ end
118
+ actual_file_contents = capture(:cat, "/tmp/#{dir_name}/#{file_name}", strip: false)
119
+ end.run
120
+ assert_equal file_contents, actual_file_contents
121
+ end
122
+
106
123
  def test_upload_string_io
107
124
  file_contents = ""
108
125
  Netssh.new(a_host) do |_host|
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.14.0
4
+ version: 1.15.0
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: 2017-06-30 00:00:00.000000000 Z
12
+ date: 2017-11-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: net-ssh
@@ -293,7 +293,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
293
293
  version: '0'
294
294
  requirements: []
295
295
  rubyforge_project:
296
- rubygems_version: 2.6.12
296
+ rubygems_version: 2.6.14
297
297
  signing_key:
298
298
  specification_version: 4
299
299
  summary: SSHKit makes it easy to write structured, testable SSH commands in Ruby