rubygems-await 0.1.5 → 0.3.0
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/fixtures/vcr_cassettes/2023-12-01.yml +388002 -0
- data/lib/rubygems/await/version.rb +1 -1
- data/lib/rubygems/await.rb +28 -5
- data/lib/rubygems/commands/await_command.rb +9 -4
- data/lib/rubygems_plugin.rb +1 -1
- metadata +7 -6
data/lib/rubygems/await.rb
CHANGED
@@ -7,6 +7,17 @@ module Rubygems
|
|
7
7
|
class Error < StandardError; end
|
8
8
|
|
9
9
|
class Awaiter
|
10
|
+
unless respond_to?(:subclasses)
|
11
|
+
def self.subclasses
|
12
|
+
@subclasses ||= []
|
13
|
+
end
|
14
|
+
|
15
|
+
def inherited(klass)
|
16
|
+
super(klass)
|
17
|
+
subclasses << klass
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
10
21
|
attr_reader :gems, :source, :deadline, :name_indent, :source_uri
|
11
22
|
|
12
23
|
def initialize(gems, source, deadline, name_indent = 10)
|
@@ -125,7 +136,7 @@ module Rubygems
|
|
125
136
|
raise NotImplementedError
|
126
137
|
end
|
127
138
|
|
128
|
-
def log(level: "info", tags: nil
|
139
|
+
def log(level: "info", tags: nil)
|
129
140
|
return unless Bundler.ui.level(level)
|
130
141
|
|
131
142
|
s = Time.now.to_s << " "
|
@@ -155,6 +166,14 @@ module Rubygems
|
|
155
166
|
def expired?(padding = 0)
|
156
167
|
Time.now + padding > deadline
|
157
168
|
end
|
169
|
+
|
170
|
+
def safe_load_marshal(contents)
|
171
|
+
if Bundler.respond_to?(:safe_load_marshal)
|
172
|
+
Bundler.safe_load_marshal(contents)
|
173
|
+
else
|
174
|
+
Marshal.load(contents) # rubocop:disable Security/MarshalLoad
|
175
|
+
end
|
176
|
+
end
|
158
177
|
end
|
159
178
|
|
160
179
|
class VersionsAwaiter < Awaiter
|
@@ -231,7 +250,11 @@ module Rubygems
|
|
231
250
|
|
232
251
|
downloader.fetch(uri)
|
233
252
|
true
|
234
|
-
rescue Bundler::Fetcher::AuthenticationForbiddenError
|
253
|
+
rescue (if defined?(::Bundler::Fetcher::AuthenticationForbiddenError)
|
254
|
+
::Bundler::Fetcher::AuthenticationForbiddenError
|
255
|
+
else
|
256
|
+
::Bundler::Fetcher::AuthenticationRequiredError
|
257
|
+
end) => e
|
235
258
|
log_error(e) { "#{Bundler::URICredentialsFilter.credential_filtered_uri(uri)} not found" }
|
236
259
|
false
|
237
260
|
end
|
@@ -276,7 +299,7 @@ module Rubygems
|
|
276
299
|
fetcher = Bundler.rubygems.gem_remote_fetcher
|
277
300
|
path = source_uri + "specs.#{Gem.marshal_version}.gz"
|
278
301
|
contents = fetcher.fetch_path(path)
|
279
|
-
idx =
|
302
|
+
idx = safe_load_marshal(contents)
|
280
303
|
|
281
304
|
idx.each do |found|
|
282
305
|
tuple = Gem::NameTuple.new(*found.map!(&:to_s))
|
@@ -298,7 +321,7 @@ module Rubygems
|
|
298
321
|
fetcher = Bundler.rubygems.gem_remote_fetcher
|
299
322
|
path = source_uri + "prerelease_specs.#{Gem.marshal_version}.gz"
|
300
323
|
contents = fetcher.fetch_path(path)
|
301
|
-
idx =
|
324
|
+
idx = safe_load_marshal(contents)
|
302
325
|
|
303
326
|
idx.each do |found|
|
304
327
|
tuple = Gem::NameTuple.new(*found.map!(&:to_s))
|
@@ -320,7 +343,7 @@ module Rubygems
|
|
320
343
|
dependency_api_uri = "#{source_uri}api/v1/dependencies"
|
321
344
|
dependency_api_uri.query = URI.encode_www_form(gems: missing.keys.sort)
|
322
345
|
marshalled_deps = downloader.fetch(dependency_api_uri).body
|
323
|
-
deps =
|
346
|
+
deps = safe_load_marshal(marshalled_deps)
|
324
347
|
|
325
348
|
deps.each do |s|
|
326
349
|
name, number, platform = s.values_at(:name, :number, :platform)
|
@@ -18,7 +18,7 @@ module Gem
|
|
18
18
|
|
19
19
|
defaults = {
|
20
20
|
timeout: 5 * 60,
|
21
|
-
awaiters
|
21
|
+
awaiters: awaiters,
|
22
22
|
skip: ["dependency api"],
|
23
23
|
only: nil
|
24
24
|
}
|
@@ -68,7 +68,12 @@ module Gem
|
|
68
68
|
end
|
69
69
|
|
70
70
|
gems = options[:args].map do |s|
|
71
|
-
|
71
|
+
if s.end_with?(".gem")
|
72
|
+
require "rubygems/package"
|
73
|
+
parts = Gem::Package.new(s).spec.name_tuple.to_a.compact.map(&:to_s)
|
74
|
+
else
|
75
|
+
parts = s.split(":", 3)
|
76
|
+
end
|
72
77
|
raise Gem::CommandLineError, "Please specify a name:version[:platform], given #{s.inspect}" if parts.size < 2
|
73
78
|
|
74
79
|
unless Gem::Version.correct?(parts[1])
|
@@ -115,7 +120,7 @@ module Gem
|
|
115
120
|
all_missing.uniq!
|
116
121
|
all_missing.map! { Bundler.ui.add_color(_1.respond_to?(:full_name) ? _1.full_name : _1.to_s, :red, :bold) }
|
117
122
|
log(level: "error") do
|
118
|
-
Bundler.ui.add_color("Timed out", :red) << " after " <<
|
123
|
+
Bundler.ui.add_color(+"Timed out", :red) << " after " <<
|
119
124
|
Bundler.ui.add_color("#{Time.now.-(start).round(2)}s", :white, :bold) <<
|
120
125
|
". Check that #{all_missing.join(", ")} are published."
|
121
126
|
end
|
@@ -148,7 +153,7 @@ module Gem
|
|
148
153
|
|
149
154
|
private
|
150
155
|
|
151
|
-
def log(level: "info", tags: nil
|
156
|
+
def log(level: "info", tags: nil)
|
152
157
|
return unless Bundler.ui.level(level)
|
153
158
|
|
154
159
|
s = Time.now.to_s << " "
|
data/lib/rubygems_plugin.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubygems-await
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Giddins
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.2'
|
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: '2.
|
26
|
+
version: '2.2'
|
27
27
|
description:
|
28
28
|
email:
|
29
29
|
- segiddins@segiddins.me
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- LICENSE.txt
|
38
38
|
- README.md
|
39
39
|
- Rakefile
|
40
|
+
- fixtures/vcr_cassettes/2023-12-01.yml
|
40
41
|
- lib/rubygems/await.rb
|
41
42
|
- lib/rubygems/await/version.rb
|
42
43
|
- lib/rubygems/commands/await_command.rb
|
@@ -58,12 +59,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
59
|
requirements:
|
59
60
|
- - ">="
|
60
61
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
62
|
+
version: '3.0'
|
62
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
64
|
requirements:
|
64
65
|
- - ">="
|
65
66
|
- !ruby/object:Gem::Version
|
66
|
-
version: '3.
|
67
|
+
version: '3.2'
|
67
68
|
requirements: []
|
68
69
|
rubygems_version: 3.4.10
|
69
70
|
signing_key:
|