dependabot-bundler 0.308.0 → 0.309.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f34662935a61fbc23f887a0b8ae372ecca9aff6ef21ee71a2b8ad0e28d06566d
4
- data.tar.gz: a8a109ee39726181d6cd6ec4c506ae5e4a03c8e75778fdf934ef8071042e9f8f
3
+ metadata.gz: 98adda346a76e929779863234b449bde7f6a82d20fd06b276985733aba5a1b32
4
+ data.tar.gz: 72fa485c071bb1afaa4e28745cd61a869208a305efd87e0031f8f4d6c644a718
5
5
  SHA512:
6
- metadata.gz: 7b983b93d53bb8b3ebd4343fc0d1251ed49ef46aa7bf9408b873a3a56da9b14eb20c809161cb0a42300d997d089b77081a29be535b6a36094b8bcc83821e661a
7
- data.tar.gz: 78db663af451497232e62c570b30055cd6862303d81cc631add051f63464c00cf07c947083fb9fd93c921d906afe5e6c3f197ee02cb0cb2e8095067270aafccc
6
+ metadata.gz: 661373820c2f8824b479631641081b88dcea64b877ae6e98961419ce5ddfd75e8f8154eee095745c854c124aab1dc6bae539633474763b4f3077127659ea2d2a
7
+ data.tar.gz: af152a6768a8675641f02b3bd98019163e047c9fd5fc75928eefb427e1d9b7fade6a1727a652cc43d0a83f0bc6914181e76787aea8a0d753943465ef52af116f
@@ -59,7 +59,7 @@ module Dependabot
59
59
 
60
60
  ruby_version =
61
61
  RUBY_VERSIONS
62
- .map { |v| Gem::Version.new(v) }.sort
62
+ .map { |v| Dependabot::Bundler::Version.new(v) }.sort
63
63
  .find { |v| requirement.satisfied_by?(v) }
64
64
 
65
65
  unless ruby_version
@@ -215,13 +215,13 @@ module Dependabot
215
215
  lower_bound_req = updated_version_req_lower_bound(filename)
216
216
 
217
217
  return lower_bound_req if latest_allowable_version.nil?
218
- return lower_bound_req unless Gem::Version.correct?(latest_allowable_version)
218
+ return lower_bound_req unless Bundler::Version.correct?(latest_allowable_version)
219
219
 
220
220
  lower_bound_req + ", <= #{latest_allowable_version}"
221
221
  end
222
222
 
223
223
  # rubocop:disable Metrics/PerceivedComplexity
224
- def updated_version_req_lower_bound(filename)
224
+ def updated_version_req_lower_bound(filename) # rubocop:disable Metrics/CyclomaticComplexity
225
225
  original_req = dependency.requirements
226
226
  .find { |r| r.fetch(:file) == filename }
227
227
  &.fetch(:requirement)
@@ -234,9 +234,9 @@ module Dependabot
234
234
  dependency.requirements.map { |r| r[:requirement] }
235
235
  .reject { |req_string| req_string.start_with?("<") }
236
236
  .select { |req_string| req_string.match?(VERSION_REGEX) }
237
- .map { |req_string| req_string.match(VERSION_REGEX) }
238
- .select { |version| Gem::Version.correct?(version) }
239
- .max_by { |version| Gem::Version.new(version) }
237
+ .map { |req_string| req_string.match(VERSION_REGEX)&.to_s }
238
+ .select { |version| Bundler::Version.correct?(version) }
239
+ .max_by { |version| Bundler::Version.new(version) }
240
240
 
241
241
  ">= #{version_for_requirement || 0}"
242
242
  end
@@ -40,7 +40,7 @@ module Dependabot
40
40
 
41
41
  # The latest version details for the dependency from a registry
42
42
  #
43
- sig { returns(T::Array[Gem::Version]) }
43
+ sig { returns(T::Array[Dependabot::Bundler::Version]) }
44
44
  def versions
45
45
  return rubygems_versions if dependency.name == "bundler"
46
46
  return rubygems_versions unless gemfile
@@ -99,7 +99,7 @@ module Dependabot
99
99
  )
100
100
 
101
101
  JSON.parse(response.body)
102
- .map { |d| Gem::Version.new(d["number"]) }
102
+ .map { |d| Dependabot::Bundler::Version.new(d["number"]) }
103
103
  end
104
104
  rescue JSON::ParserError, Excon::Error::Timeout
105
105
  @rubygems_versions = []
@@ -123,7 +123,7 @@ module Dependabot
123
123
  credentials: credentials
124
124
  }
125
125
  ).map do |version_string|
126
- Gem::Version.new(version_string)
126
+ Dependabot::Bundler::Version.new(version_string)
127
127
  end
128
128
  end
129
129
  end
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "excon"
@@ -20,6 +20,34 @@ module Dependabot
20
20
  class LatestVersionFinder < Dependabot::Package::PackageLatestVersionFinder
21
21
  extend T::Sig
22
22
 
23
+ sig do
24
+ params(
25
+ dependency: Dependabot::Dependency,
26
+ dependency_files: T::Array[Dependabot::DependencyFile],
27
+ credentials: T::Array[Dependabot::Credential],
28
+ ignored_versions: T::Array[String],
29
+ security_advisories: T::Array[Dependabot::SecurityAdvisory],
30
+ cooldown_options: T.nilable(Dependabot::Package::ReleaseCooldownOptions),
31
+ raise_on_ignored: T::Boolean,
32
+ options: T::Hash[Symbol, T.untyped]
33
+ ).void
34
+ end
35
+ def initialize(
36
+ dependency:,
37
+ dependency_files:,
38
+ credentials:,
39
+ ignored_versions:,
40
+ security_advisories:,
41
+ cooldown_options: nil,
42
+ raise_on_ignored: false,
43
+ options: {}
44
+ )
45
+ @package_details = T.let(nil, T.nilable(Dependabot::Package::PackageDetails))
46
+ @latest_version_details = T.let(nil, T.nilable(T::Hash[Symbol, T.untyped]))
47
+ @releases_from_dependency_source = T.let(nil, T.nilable(T::Array[Dependabot::Package::PackageRelease]))
48
+ super
49
+ end
50
+
23
51
  sig { override.returns(T.nilable(Dependabot::Package::PackageDetails)) }
24
52
  def package_details
25
53
  @package_details ||= Package::PackageDetailsFetcher.new(
@@ -29,6 +57,7 @@ module Dependabot
29
57
  ).fetch
30
58
  end
31
59
 
60
+ sig { returns(T.nilable(T::Hash[Symbol, T.untyped])) }
32
61
  def latest_version_details
33
62
  @latest_version_details ||= if cooldown_enabled?
34
63
  latest_version = fetch_latest_version(language_version: nil)
@@ -47,7 +76,7 @@ module Dependabot
47
76
  def available_versions
48
77
  return nil if package_details&.releases.nil?
49
78
 
50
- source_versions = dependency_source.versions
79
+ source_versions = releases_from_dependency_source
51
80
  return [] if source_versions.empty?
52
81
 
53
82
  T.must(package_details).releases.select do |release|
@@ -57,27 +86,52 @@ module Dependabot
57
86
 
58
87
  private
59
88
 
89
+ sig { returns(T.nilable(T::Hash[Symbol, Dependabot::Version])) }
60
90
  def fetch_latest_version_details
61
91
  return dependency_source.latest_git_version_details if dependency_source.git?
62
92
 
63
- relevant_versions = dependency_source.versions
93
+ relevant_versions = releases_from_dependency_source
64
94
  relevant_versions = filter_prerelease_versions(relevant_versions)
65
95
  relevant_versions = filter_ignored_versions(relevant_versions)
66
96
 
67
- relevant_versions.empty? ? nil : { version: relevant_versions.max }
97
+ return if relevant_versions.empty?
98
+
99
+ release = relevant_versions.max_by(&:version)
100
+
101
+ { version: release&.version }
68
102
  end
69
103
 
70
- def fetch_lowest_security_fix_version(*)
104
+ sig do
105
+ params(language_version: T.nilable(T.any(String, Dependabot::Version)))
106
+ .returns(T.nilable(Dependabot::Version))
107
+ end
108
+ def fetch_lowest_security_fix_version(language_version: nil) # rubocop:disable Lint/UnusedMethodArgument
71
109
  return if dependency_source.git?
72
110
 
73
- relevant_versions = dependency_source.versions
111
+ relevant_versions = releases_from_dependency_source
74
112
  relevant_versions = filter_prerelease_versions(relevant_versions)
75
- relevant_versions = Dependabot::UpdateCheckers::VersionFilters.filter_vulnerable_versions(relevant_versions,
76
- security_advisories)
113
+ relevant_versions = Dependabot::UpdateCheckers::VersionFilters
114
+ .filter_vulnerable_versions(
115
+ relevant_versions,
116
+ security_advisories
117
+ )
77
118
  relevant_versions = filter_ignored_versions(relevant_versions)
78
119
  relevant_versions = filter_lower_versions(relevant_versions)
79
120
 
80
- relevant_versions.min
121
+ relevant_versions.min_by(&:version)&.version
122
+ end
123
+
124
+ sig { returns(T::Array[Dependabot::Package::PackageRelease]) }
125
+ def releases_from_dependency_source
126
+ return @releases_from_dependency_source if @releases_from_dependency_source
127
+
128
+ @releases_from_dependency_source =
129
+ dependency_source.versions.map do |version|
130
+ Dependabot::Package::PackageRelease.new(
131
+ version: version
132
+ )
133
+ end
134
+ @releases_from_dependency_source
81
135
  end
82
136
 
83
137
  sig { returns(T::Boolean) }
@@ -96,7 +150,7 @@ module Dependabot
96
150
  )
97
151
  end
98
152
 
99
- # sig { returns(DependencySource) }
153
+ sig { returns(DependencySource) }
100
154
  def dependency_source
101
155
  @dependency_source ||= T.let(
102
156
  DependencySource.new(
@@ -26,7 +26,7 @@ module Dependabot
26
26
  def initialize(requirements:, update_strategy:, updated_source:,
27
27
  latest_version:, latest_resolvable_version:)
28
28
  @requirements = requirements
29
- @latest_version = Gem::Version.new(latest_version) if latest_version
29
+ @latest_version = Dependabot::Bundler::Version.new(latest_version) if latest_version
30
30
  @updated_source = updated_source
31
31
  @update_strategy = update_strategy
32
32
 
@@ -35,7 +35,7 @@ module Dependabot
35
35
  return unless latest_resolvable_version
36
36
 
37
37
  @latest_resolvable_version =
38
- Gem::Version.new(latest_resolvable_version)
38
+ Dependabot::Bundler::Version.new(latest_resolvable_version)
39
39
  end
40
40
 
41
41
  def updated_requirements
@@ -267,7 +267,9 @@ module Dependabot
267
267
  # Updates the version in a "<" or "<=" constraint to allow the given
268
268
  # version
269
269
  def update_greatest_version(requirement, version_to_be_permitted)
270
- version_to_be_permitted = Gem::Version.new(version_to_be_permitted) if version_to_be_permitted.is_a?(String)
270
+ if version_to_be_permitted.is_a?(String)
271
+ version_to_be_permitted = Dependabot::Bundler::Version.new(version_to_be_permitted)
272
+ end
271
273
  op, version = requirement.requirements.first
272
274
  version = version.release if version.prerelease?
273
275
 
@@ -118,7 +118,7 @@ module Dependabot
118
118
  # mismatch
119
119
  return nil if ruby_version_incompatible?(details)
120
120
 
121
- details[:version] = Gem::Version.new(details[:version])
121
+ details[:version] = Dependabot::Bundler::Version.new(details[:version])
122
122
  end
123
123
  details
124
124
  end
@@ -130,10 +130,10 @@ module Dependabot
130
130
 
131
131
  updated_dependencies.none? do |dep|
132
132
  old_version = dep.previous_version
133
- next unless Gem::Version.correct?(old_version)
134
- next if Gem::Version.new(old_version).prerelease?
133
+ next unless Dependabot::Bundler::Version.correct?(old_version)
134
+ next if Dependabot::Bundler::Version.new(old_version).prerelease?
135
135
 
136
- Gem::Version.new(dep.version).prerelease?
136
+ Dependabot::Bundler::Version.new(dep.version).prerelease?
137
137
  end
138
138
  rescue Dependabot::DependencyFileNotResolvable
139
139
  false
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.308.0
4
+ version: 0.309.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-04-12 00:00:00.000000000 Z
10
+ date: 2025-04-17 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: dependabot-common
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.308.0
18
+ version: 0.309.0
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.308.0
25
+ version: 0.309.0
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.308.0
325
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.309.0
326
326
  rdoc_options: []
327
327
  require_paths:
328
328
  - lib