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.
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Rubygems
4
4
  module Await
5
- VERSION = "0.1.5"
5
+ VERSION = "0.3.0"
6
6
  end
7
7
  end
@@ -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 => e
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 = Bundler.safe_load_marshal(contents)
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 = Bundler.safe_load_marshal(contents)
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 = Bundler.safe_load_marshal(marshalled_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
- parts = s.split(":", 3)
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 << " "
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rubygems/command"
3
+ require "rubygems/command_manager"
4
4
  Gem::CommandManager.instance.register_command :await
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.1.5
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-10-23 00:00:00.000000000 Z
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.4'
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.4'
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.2'
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.4'
67
+ version: '3.2'
67
68
  requirements: []
68
69
  rubygems_version: 3.4.10
69
70
  signing_key: