relaton-index 0.2.17 → 0.2.19
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 +4 -4
- data/.rubocop.yml +1 -1
- data/lib/relaton/index/file_io.rb +25 -6
- data/lib/relaton/index/version.rb +1 -1
- data/relaton-index.gemspec +2 -1
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0e0ad0db979d523bfd05a561b5f81ba0aab46f41f02d524c804c4767fa50e57b
|
|
4
|
+
data.tar.gz: f9e2c9fc9bdc73f8ae55cc5badd54190fbb0d2bef812c16c42ff6a4ed126958f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d53ca914ea49bc69a1c80833ad7996a6bde8b5c583dfd7b8ac4aa858e5a3bb5031050271adafbbb58a511f987769e4133b5bbac0479e5455a2c36b0a708031a2
|
|
7
|
+
data.tar.gz: e01cdbea3d72c1c76d48a735adba13af8af34f9c3cdd994de8532a8c8eef815548396c9d254a7824a1d7a83ce3d38ab41ca61602f851479f6111c35b035bbacf
|
data/.rubocop.yml
CHANGED
|
@@ -8,6 +8,9 @@ module Relaton
|
|
|
8
8
|
class FileIO
|
|
9
9
|
attr_reader :url, :pubid_class
|
|
10
10
|
|
|
11
|
+
@@file_locks = {}
|
|
12
|
+
@@file_locks_mutex = Mutex.new
|
|
13
|
+
|
|
11
14
|
#
|
|
12
15
|
# Initialize FileIO
|
|
13
16
|
#
|
|
@@ -39,7 +42,9 @@ module Relaton
|
|
|
39
42
|
def read
|
|
40
43
|
case url
|
|
41
44
|
when String
|
|
42
|
-
|
|
45
|
+
with_file_lock do
|
|
46
|
+
check_file || fetch_and_save
|
|
47
|
+
end
|
|
43
48
|
else
|
|
44
49
|
read_file || []
|
|
45
50
|
end
|
|
@@ -146,20 +151,22 @@ module Relaton
|
|
|
146
151
|
warn_local_index_error "YAML parsing error when reading"
|
|
147
152
|
end
|
|
148
153
|
end
|
|
154
|
+
|
|
149
155
|
#
|
|
150
156
|
# Fetch index from external repository and save it to storage
|
|
151
157
|
#
|
|
152
158
|
# @return [Array<Hash>] index
|
|
153
159
|
#
|
|
154
160
|
def fetch_and_save
|
|
155
|
-
|
|
161
|
+
uri = URI.parse(url)
|
|
162
|
+
body = Net::HTTP.get(uri)
|
|
156
163
|
yaml = nil
|
|
157
|
-
Zip::File.open_buffer(
|
|
164
|
+
Zip::File.open_buffer(body) do |zip|
|
|
158
165
|
entry = zip.entries.first
|
|
159
166
|
yaml = entry.get_input_stream.read
|
|
160
167
|
end
|
|
161
168
|
Util.info "Downloaded index from `#{url}`", progname
|
|
162
|
-
load_index(yaml,
|
|
169
|
+
load_index(yaml, true)
|
|
163
170
|
end
|
|
164
171
|
|
|
165
172
|
def warn_remote_index_error(reason)
|
|
@@ -176,8 +183,10 @@ module Relaton
|
|
|
176
183
|
# @return [void]
|
|
177
184
|
#
|
|
178
185
|
def save(index)
|
|
179
|
-
|
|
180
|
-
|
|
186
|
+
yaml = index.map do |item|
|
|
187
|
+
item.transform_values { |value| value.is_a?(Pubid::Core::Identifier::Base) ? value.to_h : value }
|
|
188
|
+
end.to_yaml
|
|
189
|
+
Index.config.storage.write file, yaml
|
|
181
190
|
end
|
|
182
191
|
|
|
183
192
|
#
|
|
@@ -189,6 +198,16 @@ module Relaton
|
|
|
189
198
|
Index.config.storage.remove file
|
|
190
199
|
[]
|
|
191
200
|
end
|
|
201
|
+
|
|
202
|
+
private
|
|
203
|
+
|
|
204
|
+
def with_file_lock(&)
|
|
205
|
+
@@file_locks_mutex.synchronize do
|
|
206
|
+
@@file_locks[file] ||= Mutex.new
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
@@file_locks[file].synchronize(&)
|
|
210
|
+
end
|
|
192
211
|
end
|
|
193
212
|
end
|
|
194
213
|
end
|
data/relaton-index.gemspec
CHANGED
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
|
11
11
|
spec.summary = "Relaton Index is a library for indexing Relaton files."
|
|
12
12
|
spec.homepage = "https://github.com/relaton/relaton-index"
|
|
13
13
|
spec.license = "MIT"
|
|
14
|
-
spec.required_ruby_version = ">=
|
|
14
|
+
spec.required_ruby_version = ">= 3.1.0"
|
|
15
15
|
|
|
16
16
|
# spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
|
|
17
17
|
|
|
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
|
|
|
30
30
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
31
31
|
spec.require_paths = ["lib"]
|
|
32
32
|
|
|
33
|
+
spec.add_dependency "openssl", "~> 3.3.2"
|
|
33
34
|
spec.add_dependency "pubid-core", "~> 1.15.0"
|
|
34
35
|
spec.add_dependency "relaton-logger", "~> 0.2.0"
|
|
35
36
|
spec.add_dependency "rubyzip", "~> 2.3.0"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: relaton-index
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.19
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
@@ -9,6 +9,20 @@ bindir: exe
|
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: openssl
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: 3.3.2
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: 3.3.2
|
|
12
26
|
- !ruby/object:Gem::Dependency
|
|
13
27
|
name: pubid-core
|
|
14
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -86,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
86
100
|
requirements:
|
|
87
101
|
- - ">="
|
|
88
102
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
103
|
+
version: 3.1.0
|
|
90
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
105
|
requirements:
|
|
92
106
|
- - ">="
|