relaton-index 0.2.16 → 0.2.18
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 +27 -7
- data/lib/relaton/index/version.rb +1 -1
- data/relaton-index.gemspec +3 -2
- metadata +20 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4a0b0524d3ff48cefa5a45836a1a66752936d4c2f314c7b9a57ce57e66bf1188
|
|
4
|
+
data.tar.gz: a44c2069cead390088f0100ebcd79931fda7acf2c588e725f405af8338ee8d53
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2259a5c99d9be722cdde9970a9e8f9991ba9b54196e1309116d8cbdacecd02bf61f1cd46d5ec84b49248f7dc3c1b4c1a97d76060176e0da7fee707838a2b5027
|
|
7
|
+
data.tar.gz: 77a0daf08f996acba87a6c177bc04596dc552a1607b14b14edc4964b32280afa89d6bbec6aef501796aae0a5de37cd72d12bff891427f56ea2f96fbf43b4a242
|
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,6 +151,7 @@ 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
|
#
|
|
@@ -153,11 +159,13 @@ module Relaton
|
|
|
153
159
|
#
|
|
154
160
|
def fetch_and_save
|
|
155
161
|
resp = StringIO.new(URI(url).read)
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
162
|
+
yaml = nil
|
|
163
|
+
Zip::File.open_buffer(resp) do |zip|
|
|
164
|
+
entry = zip.entries.first
|
|
165
|
+
yaml = entry.get_input_stream.read
|
|
166
|
+
end
|
|
159
167
|
Util.info "Downloaded index from `#{url}`", progname
|
|
160
|
-
load_index(yaml,
|
|
168
|
+
load_index(yaml, _save = true)
|
|
161
169
|
end
|
|
162
170
|
|
|
163
171
|
def warn_remote_index_error(reason)
|
|
@@ -174,8 +182,10 @@ module Relaton
|
|
|
174
182
|
# @return [void]
|
|
175
183
|
#
|
|
176
184
|
def save(index)
|
|
177
|
-
|
|
178
|
-
|
|
185
|
+
yaml = index.map do |item|
|
|
186
|
+
item.transform_values { |value| value.is_a?(Pubid::Core::Identifier::Base) ? value.to_h : value }
|
|
187
|
+
end.to_yaml
|
|
188
|
+
Index.config.storage.write file, yaml
|
|
179
189
|
end
|
|
180
190
|
|
|
181
191
|
#
|
|
@@ -187,6 +197,16 @@ module Relaton
|
|
|
187
197
|
Index.config.storage.remove file
|
|
188
198
|
[]
|
|
189
199
|
end
|
|
200
|
+
|
|
201
|
+
private
|
|
202
|
+
|
|
203
|
+
def with_file_lock(&)
|
|
204
|
+
@@file_locks_mutex.synchronize do
|
|
205
|
+
@@file_locks[file] ||= Mutex.new
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
@@file_locks[file].synchronize(&)
|
|
209
|
+
end
|
|
190
210
|
end
|
|
191
211
|
end
|
|
192
212
|
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,7 +30,8 @@ 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 "
|
|
33
|
+
spec.add_dependency "openssl", "~> 3.3.2"
|
|
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"
|
|
36
37
|
|
metadata
CHANGED
|
@@ -1,29 +1,42 @@
|
|
|
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.18
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
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
|
|
13
26
|
- !ruby/object:Gem::Dependency
|
|
14
27
|
name: pubid-core
|
|
15
28
|
requirement: !ruby/object:Gem::Requirement
|
|
16
29
|
requirements:
|
|
17
30
|
- - "~>"
|
|
18
31
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 1.
|
|
32
|
+
version: 1.15.0
|
|
20
33
|
type: :runtime
|
|
21
34
|
prerelease: false
|
|
22
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
36
|
requirements:
|
|
24
37
|
- - "~>"
|
|
25
38
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 1.
|
|
39
|
+
version: 1.15.0
|
|
27
40
|
- !ruby/object:Gem::Dependency
|
|
28
41
|
name: relaton-logger
|
|
29
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,7 +65,6 @@ dependencies:
|
|
|
52
65
|
- - "~>"
|
|
53
66
|
- !ruby/object:Gem::Version
|
|
54
67
|
version: 2.3.0
|
|
55
|
-
description:
|
|
56
68
|
email:
|
|
57
69
|
- open.source@ribose.com
|
|
58
70
|
executables: []
|
|
@@ -81,7 +93,6 @@ licenses:
|
|
|
81
93
|
metadata:
|
|
82
94
|
homepage_uri: https://github.com/relaton/relaton-index
|
|
83
95
|
source_code_uri: https://github.com/relaton/relaton-index
|
|
84
|
-
post_install_message:
|
|
85
96
|
rdoc_options: []
|
|
86
97
|
require_paths:
|
|
87
98
|
- lib
|
|
@@ -89,15 +100,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
89
100
|
requirements:
|
|
90
101
|
- - ">="
|
|
91
102
|
- !ruby/object:Gem::Version
|
|
92
|
-
version:
|
|
103
|
+
version: 3.1.0
|
|
93
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
105
|
requirements:
|
|
95
106
|
- - ">="
|
|
96
107
|
- !ruby/object:Gem::Version
|
|
97
108
|
version: '0'
|
|
98
109
|
requirements: []
|
|
99
|
-
rubygems_version: 3.
|
|
100
|
-
signing_key:
|
|
110
|
+
rubygems_version: 3.6.9
|
|
101
111
|
specification_version: 4
|
|
102
112
|
summary: Relaton Index is a library for indexing Relaton files.
|
|
103
113
|
test_files: []
|