dependabot-bundler 0.340.0 → 0.342.1

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: 5c0b0c9d7a2a331fb66c6ac05cd0d7675f814fa463f7ff6708ce1e6f67d4dd84
4
- data.tar.gz: e99f4c6991029f7f44fc0a82c79298e7b57ca5e52e723abcf7e0a29f23635d2e
3
+ metadata.gz: 1fd1b0a746b772dd5ae81c3399691e073fa0bea9e6a55b38f65694193b6b77df
4
+ data.tar.gz: 26550eae8dd5e1a2d89309a16b51437ec33f213c645ecf8a7636af5c756ac3f4
5
5
  SHA512:
6
- metadata.gz: 20b5302d3448988548f0db9552f19d2ef7093dfde8913ac2daba6c36b302db351672a1e869805165489068e1a9dace40b149317df99ecf45063c1025e0f48df8
7
- data.tar.gz: 20c66bb7c4d1293f0fb19f3f5ebec61de873f3a21066b6d4ee9935d0bb858151d381c91e2f5979bd727b226fd787de6f1f8fd71b1f9979dfc54a5d9aad124f04
6
+ metadata.gz: 4c6c5aed0c04d9aef96f30e967269fa0f7d7387b7596cc835264933c08746d72c13aaf2f1d4035b72d98f15fa9c42e01d06634a348b0a023d783d44ffeafcdd8
7
+ data.tar.gz: '0693c436743e2fb012bdd559d0af5893c386940920894975a84a731c7aa89d138fab157e3533d7561d68962b9eea2e5ca77452b4f767701f7ee240513bae0db6'
@@ -18,16 +18,6 @@ module Dependabot
18
18
  require_relative "file_updater/gemspec_updater"
19
19
  require_relative "file_updater/lockfile_updater"
20
20
 
21
- sig { override.returns(T::Array[Regexp]) }
22
- def self.updated_files_regex
23
- [
24
- # Matches Gemfile, Gemfile.lock, gems.rb, gems.locked, .gemspec files, and anything in vendor directory
25
- %r{^(Gemfile(\.lock)?|gems\.(rb|locked)|.*\.gemspec|vendor/.*)$},
26
- # Matches the same files in any subdirectory
27
- %r{^.*/(Gemfile|Gemfile\.lock|gems\.rb|gems\.locked)$}
28
- ]
29
- end
30
-
31
21
  # rubocop:disable Metrics/PerceivedComplexity
32
22
  # rubocop:disable Metrics/AbcSize
33
23
  sig { override.returns(T::Array[Dependabot::DependencyFile]) }
@@ -138,38 +138,82 @@ module Dependabot
138
138
  # curl -H "Accept: application/json" \
139
139
  # -H "Authorization: Bearer <<TOKEN>>" \
140
140
  # https://api.github.com/orgs/dsp-testing/packages/rubygems/json/version
141
+
142
+ validate_and_check_registry(registry_url)
143
+ end
144
+
145
+ sig { params(registry_url: String).returns(Dependabot::Package::PackageDetails) }
146
+ def validate_and_check_registry(registry_url)
141
147
  parsed_url = begin
142
148
  URI.parse(registry_url)
143
149
  rescue URI::InvalidURIError
144
150
  raise "Invalid registry URL: #{registry_url}"
145
151
  end
146
152
 
147
- # Handle GitHub Package Registry
148
153
  return github_packages_versions(registry_url) if parsed_url.host == "rubygems.pkg.github.com"
149
154
 
155
+ fetch_and_process_rubygems_response(registry_url)
156
+ end
157
+
158
+ sig { params(registry_url: String).returns(Dependabot::Package::PackageDetails) }
159
+ def fetch_and_process_rubygems_response(registry_url)
150
160
  response = registry_json_response_for_dependency(registry_url)
151
161
 
152
162
  unless response.status == 200
153
- error_details = "Status: #{response.status}"
154
- error_message = "Failed to fetch versions for '#{dependency.name}' from '#{registry_url}'. #{error_details}"
155
- Dependabot.logger.info(error_message)
163
+ error_msg = "Failed to fetch versions for '#{dependency.name}' from '#{registry_url}'. " \
164
+ "Status: #{response.status}"
165
+ log_error(error_msg)
156
166
  return package_details([])
157
167
  end
158
168
 
159
- registry_url = get_url_from_dependency(dependency) || "https://rubygems.org" # Get registry_url
169
+ return handle_empty_response(registry_url) if response.body.nil? || response.body.strip.empty?
160
170
 
161
- package_releases = JSON.parse(response.body).map do |release|
162
- gem_name_with_version = "#{@dependency.name}-#{release['number']}"
171
+ parse_rubygems_response(response, registry_url)
172
+ end
173
+
174
+ sig do
175
+ params(response: Excon::Response, registry_url: String)
176
+ .returns(Dependabot::Package::PackageDetails)
177
+ end
178
+ def parse_rubygems_response(response, registry_url)
179
+ parsed_response = JSON.parse(response.body)
180
+
181
+ unless parsed_response.is_a?(Array)
182
+ log_error("Unexpected response format for '#{dependency.name}' from '#{registry_url}'")
183
+ return package_details([])
184
+ end
185
+
186
+ package_releases = parsed_response.map do |release|
187
+ gem_name_with_version = "#{dependency.name}-#{release['number']}"
163
188
  package_release(
164
189
  version: release["number"],
165
190
  released_at: Time.parse(release["created_at"]),
166
- downloads: release["downloads_count"],
191
+ downloads: release["downloads_count"] || 0,
167
192
  url: format(GEM_URL, registry_url, gem_name_with_version),
168
193
  ruby_version: release["ruby_version"]
169
194
  )
170
195
  end
171
196
 
172
197
  package_details(package_releases)
198
+ rescue JSON::ParserError
199
+ log_error("Failed to parse JSON response for '#{dependency.name}' from '#{registry_url}'")
200
+ package_details([])
201
+ rescue StandardError => e
202
+ error_msg = "Unexpected error processing response for '#{dependency.name}' from " \
203
+ "'#{registry_url}': #{e.message}"
204
+ log_error(error_msg)
205
+ package_details([])
206
+ end
207
+
208
+ sig { params(registry_url: String).returns(Dependabot::Package::PackageDetails) }
209
+ def handle_empty_response(registry_url)
210
+ log_error("Empty response body for '#{dependency.name}' from '#{registry_url}'")
211
+ package_details([])
212
+ end
213
+
214
+ sig { params(message: String).void }
215
+ def log_error(message)
216
+ Dependabot.logger.info(message)
173
217
  end
174
218
 
175
219
  sig { params(dependency: T.untyped).returns(T.nilable(String)) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.340.0
4
+ version: 0.342.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.340.0
18
+ version: 0.342.1
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.340.0
25
+ version: 0.342.1
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: parallel
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -322,7 +322,7 @@ licenses:
322
322
  - MIT
323
323
  metadata:
324
324
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
325
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.340.0
325
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.342.1
326
326
  rdoc_options: []
327
327
  require_paths:
328
328
  - lib