bfs-scp 0.7.2 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bfs/bucket/scp.rb +5 -10
- data/spec/bfs/bucket/scp_spec.rb +15 -17
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29d510784470981aeebbf54fdde1c56cafbe6e7a53bb3aa7cc1ac6f043315c3f
|
4
|
+
data.tar.gz: d80b9721dbb7934abddbb5ea09adf1fb0de83421cf9deeb298d0bf0ae450a50e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d9bf7a73342ae2090dbbb487d87fc28aefd8680b6f6145c82f790905467e2e662152e7c5710f73147a163f4adc43687dbb63afece37b8867e20c437169b9af6
|
7
|
+
data.tar.gz: e0458841db2fa130caa4a64d4b954f4ef3fda113a905ce9ae3b9e556d3a468f3747cfdb83d9f5f629dda505a27ed35b60b445a10f35fdc7aeec1db70462f5495
|
data/lib/bfs/bucket/scp.rb
CHANGED
@@ -35,7 +35,7 @@ module BFS
|
|
35
35
|
@client = Net::SCP.start(host, nil, **opts.slice(*Net::SSH::VALID_OPTIONS))
|
36
36
|
|
37
37
|
if @prefix # rubocop:disable Style/GuardClause
|
38
|
-
@prefix = norm_path(@prefix)
|
38
|
+
@prefix = "#{norm_path(@prefix)}/"
|
39
39
|
mkdir_p abs_path(@prefix)
|
40
40
|
end
|
41
41
|
end
|
@@ -72,17 +72,10 @@ module BFS
|
|
72
72
|
full = full_path(path)
|
73
73
|
|
74
74
|
opts[:preserve] = true if perm && !opts.key?(:preserve)
|
75
|
-
|
75
|
+
BFS::Writer.new(path, encoding: encoding, perm: perm) do |temp_path|
|
76
76
|
mkdir_p File.dirname(full)
|
77
77
|
@client.upload!(temp_path, full, **opts)
|
78
|
-
end
|
79
|
-
return temp unless block
|
80
|
-
|
81
|
-
begin
|
82
|
-
yield temp
|
83
|
-
ensure
|
84
|
-
temp.close
|
85
|
-
end
|
78
|
+
end.perform(&block)
|
86
79
|
end
|
87
80
|
|
88
81
|
# Opens an existing file for reading
|
@@ -184,6 +177,8 @@ module BFS
|
|
184
177
|
end
|
185
178
|
|
186
179
|
BFS.register('scp', 'ssh') do |url, opts, block|
|
180
|
+
prefix = BFS.norm_path(opts[:prefix] || url.path)
|
181
|
+
opts[:prefix] = prefix unless prefix.empty?
|
187
182
|
opts[:user] ||= CGI.unescape(url.user) if url.user
|
188
183
|
opts[:password] ||= CGI.unescape(url.password) if url.password
|
189
184
|
opts[:port] ||= url.port if url.port
|
data/spec/bfs/bucket/scp_spec.rb
CHANGED
@@ -1,28 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
scp.session.exec!('hostname')
|
8
|
-
end
|
9
|
-
true
|
10
|
-
rescue Net::SSH::Exception, Errno::ECONNREFUSED => e
|
11
|
-
warn "WARNING: unable to run #{File.basename __FILE__}: #{e.message}"
|
12
|
-
false
|
13
|
-
end
|
3
|
+
RSpec.describe BFS::Bucket::SCP, scp: true do
|
4
|
+
let(:hostname) { '127.0.0.1' }
|
5
|
+
let(:conn_opts) { { port: 7022, user: 'root', password: 'root', prefix: prefix } }
|
6
|
+
let(:prefix) { SecureRandom.uuid }
|
14
7
|
|
15
|
-
|
16
|
-
|
17
|
-
subject { described_class.new sandbox[:host], **sandbox[:opts].merge(prefix: SecureRandom.uuid) }
|
18
|
-
after { subject.close }
|
8
|
+
subject { described_class.new hostname, **conn_opts }
|
9
|
+
after { subject.close }
|
19
10
|
|
11
|
+
context 'absolute' do
|
20
12
|
it_behaves_like 'a bucket', content_type: false, metadata: false
|
21
13
|
end
|
22
14
|
|
23
15
|
context 'relative' do
|
24
|
-
|
25
|
-
after { subject.close }
|
16
|
+
let(:prefix) { "~/#{SecureRandom.uuid}" }
|
26
17
|
|
27
18
|
it_behaves_like 'a bucket', content_type: false, metadata: false
|
28
19
|
end
|
@@ -30,6 +21,13 @@ RSpec.describe BFS::Bucket::SCP, if: run_spec do
|
|
30
21
|
it 'should resolve from URL' do
|
31
22
|
bucket = BFS.resolve('scp://root:root@127.0.0.1:7022')
|
32
23
|
expect(bucket).to be_instance_of(described_class)
|
24
|
+
expect(bucket.instance_variable_get(:@prefix)).to be_nil
|
25
|
+
bucket.close
|
26
|
+
|
27
|
+
bucket = BFS.resolve('scp://root:root@127.0.0.1:7022/a/b/')
|
28
|
+
expect(bucket).to be_instance_of(described_class)
|
29
|
+
expect(bucket.instance_variable_get(:@prefix)).to eq('a/b/')
|
30
|
+
bucket.close
|
33
31
|
end
|
34
32
|
|
35
33
|
it 'should handle absolute and relative paths' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bfs-scp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitrij Denissenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bfs
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.8.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.8.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: net-scp
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|