bfs-gs 0.7.0 → 0.7.5

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
2
  SHA256:
3
- metadata.gz: a2d89afa0f45efa9b6fd19cc525754cc52dd0860df44c1ca042371df28c1f75a
4
- data.tar.gz: b5ec4ef496facbc6f062c81017ed0ed35f0a06f7e512b5a657688130bed041a7
3
+ metadata.gz: '068f4b652ec2ef87b680e2ababa9de943b87807626a662fc645813d8fe038eca'
4
+ data.tar.gz: de6b4d78c33dee9c85929031cf29f5b3fc19c9a0d0d28ae8735609f5f5f00b1e
5
5
  SHA512:
6
- metadata.gz: 1c7c2c221cb15b740721a1224a73ffb1203fefd0431253f8b07e12cec454aa8d1b8806381bbe5036ee607fdc582f43ab98a862471ac3c37e76dcb7cad79ab9c1
7
- data.tar.gz: a8f78a4813033d7ebe7cb244ae68a3424aadbf251d845f909614325e35931bf85816a4e3aceffdf51e8520e9023aa0fbb1528a46a18801f9335b71ae16864de0
6
+ metadata.gz: 7d15bb556314fa4e06c24742890a47427b4b7af5e946120c7e24079e613dd236384146af23e67349e5625e7bcd283a5900394a1fb75144cff885bb7020231b76
7
+ data.tar.gz: 22bd175fecc3c3e75d3a60154a760c1c87c5e773f5ec6e1dd90af001b4ef91a799595d9942c3a5128542a0cd58a16a0f4a48e52e6a6b850657cacb66bc089bcd
@@ -33,7 +33,7 @@ module BFS
33
33
 
34
34
  # Lists the contents of a bucket using a glob pattern
35
35
  def ls(pattern = '**/*', **opts)
36
- prefix = pattern[%r{^[^\*\?\{\}\[\]]+/}]
36
+ prefix = pattern[%r{^[^*?\{\}\[\]]+/}]
37
37
  prefix = File.join(*[@prefix, prefix].compact) if @prefix
38
38
  opts = opts.merge(prefix: prefix) if prefix
39
39
 
@@ -59,18 +59,11 @@ module BFS
59
59
  def create(path, encoding: self.encoding, perm: self.perm, **opts, &block)
60
60
  opts[:metadata] = norm_meta(opts[:metadata])
61
61
  path = full_path(path)
62
- temp = BFS::TempWriter.new(path, encoding: encoding, perm: perm) do |t|
62
+ BFS::TempWriter.new(path, encoding: encoding, perm: perm) do |t|
63
63
  File.open(t, encoding: encoding) do |file|
64
64
  @bucket.create_file(file, path, **opts)
65
65
  end
66
- end
67
- return temp unless block
68
-
69
- begin
70
- yield temp
71
- ensure
72
- temp.close
73
- end
66
+ end.perform(&block)
74
67
  end
75
68
 
76
69
  # Opens an existing file for reading
@@ -105,12 +98,15 @@ module BFS
105
98
  end
106
99
  end
107
100
 
108
- BFS.register('gs') do |url, opts|
101
+ BFS.register('gs') do |url, opts, block|
109
102
  prefix = BFS.norm_path(opts.key?(:prefix) ? opts[:prefix] : url.path)
110
103
  prefix = nil if prefix.empty?
111
-
112
- BFS::Bucket::GS.new url.host, **opts.slice(:project_id, :credentials, :acl),
113
- prefix: prefix,
114
- timeout: opts.key?(:timeout) ? opts[:timeout].to_i : nil,
115
- retries: opts.key?(:retries) ? opts[:retries].to_i : nil
104
+ opts = opts.slice(:project_id, :credentials, :acl)
105
+ extra = {
106
+ prefix: prefix,
107
+ timeout: opts.key?(:timeout) ? opts[:timeout].to_i : nil,
108
+ retries: opts.key?(:retries) ? opts[:retries].to_i : nil,
109
+ }
110
+
111
+ BFS::Bucket::GS.open url.host, **opts, **extra, &block
116
112
  end
@@ -6,17 +6,9 @@ module Google::Auth::CredentialsLoader
6
6
  module_function :warn_if_cloud_sdk_credentials # rubocop:disable Style/AccessModifierDeclarations
7
7
  end
8
8
 
9
- sandbox = { project: 'bogus', bucket: 'bsm-bfs-unittest' }.freeze
10
- run_spec = \
11
- begin
12
- s = Google::Cloud::Storage.new(project_id: sandbox[:project])
13
- !s.bucket(sandbox[:bucket]).nil?
14
- rescue Signet::AuthorizationError => e
15
- warn "WARNING: unable to run #{File.basename __FILE__}: #{e.message}"
16
- false
17
- end
9
+ sandbox = { project: 'bogus', bucket: 'bsm-bfs-unittest' }.freeze
18
10
 
19
- RSpec.describe BFS::Bucket::GS, if: run_spec do
11
+ RSpec.describe BFS::Bucket::GS, gs: true do
20
12
  let(:prefix) { "x/#{SecureRandom.uuid}/" }
21
13
 
22
14
  subject do
@@ -34,15 +26,18 @@ RSpec.describe BFS::Bucket::GS, if: run_spec do
34
26
  expect(bucket).to be_instance_of(described_class)
35
27
  expect(bucket.name).to eq(sandbox[:bucket])
36
28
  expect(bucket.instance_variable_get(:@prefix)).to be_nil
29
+ bucket.close
37
30
 
38
31
  bucket = BFS.resolve("gs://#{sandbox[:bucket]}/a/b/")
39
32
  expect(bucket).to be_instance_of(described_class)
40
33
  expect(bucket.name).to eq(sandbox[:bucket])
41
34
  expect(bucket.instance_variable_get(:@prefix)).to eq('a/b')
35
+ bucket.close
42
36
  end
43
37
 
44
38
  it 'should enumerate over a large number of files' do
45
39
  bucket = described_class.new sandbox[:bucket], project_id: sandbox[:project], prefix: 'm/'
46
40
  expect(bucket.ls('**/*').count).to eq(2121)
41
+ bucket.close
47
42
  end
48
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bfs-gs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.5
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-05-28 00:00:00.000000000 Z
11
+ date: 2020-11-02 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.7.0
19
+ version: 0.7.5
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.7.0
26
+ version: 0.7.5
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: google-cloud-storage
29
29
  requirement: !ruby/object:Gem::Requirement