dependabot-common 0.348.1 → 0.350.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: c07b70848e86cb2c9d154be70cffa34a3181d686f5d678e622faeaab7d486f60
4
- data.tar.gz: '081cfd5c47507c105d1e08e22f6287db8aad26935ba50465a15e303c0b8e0a61'
3
+ metadata.gz: e3e7d8b7801d11a969b187ac545af8c704d7883830afd5d8670463ff7c936df3
4
+ data.tar.gz: 23e68319bd675a9347b35ffedc107823f71c8de6054e18ecf2a91a4a1d3ce2e5
5
5
  SHA512:
6
- metadata.gz: f4df13b325aae5519a61b492e98eb7d3b0a0c8b7994cbff9e6e27d3723e759d86f171316a3afc27fd8470308d726493b5bad3c3c8af047f9f7a02d93487491b4
7
- data.tar.gz: 120504f01cd33f34dec8439b38ef0adeefdd612b4b853252b7374ad544e5cfa94d54f46c900bed488a0a6d6e21199c1186b6627b7ef8181251fd78c910bf5be8
6
+ metadata.gz: ecbec2eb7cbe4a37495a619f814e76401a49dadcc6abde2d412a5d2e8f1347361d957d44f3020a6ca73a2035850c241e345581674256393a3f2bed506fb643e9
7
+ data.tar.gz: db8dbaf3c46e4286aed04a7c1d39ba66b192696b4547beb875a35dae9cfa01ae4371c020d5a4128160daa57d147f2227c6a034cb1dedf3a12942dd4dd8ed7895
@@ -65,11 +65,12 @@ module Dependabot
65
65
  prepare! unless prepared
66
66
 
67
67
  @dependencies.each_with_object({}) do |dep, resolved|
68
- resolved[dep.name] = ResolvedDependency.new(
69
- package_url: build_purl(dep),
68
+ purl = build_purl(dep)
69
+ resolved[purl] = ResolvedDependency.new(
70
+ package_url: purl,
70
71
  direct: dep.top_level?,
71
72
  runtime: dep.production?,
72
- dependencies: safe_fetch_subdependencies(dep)
73
+ dependencies: safe_fetch_subdependencies(dep).map { |d| build_purl(d) }
73
74
  )
74
75
  end
75
76
  end
@@ -84,11 +85,23 @@ module Dependabot
84
85
  file_parser.dependency_files
85
86
  end
86
87
 
87
- sig { params(dependency: Dependabot::Dependency).returns(T::Array[String]) }
88
+ sig { returns(T::Hash[String, Dependabot::Dependency]) }
89
+ def dependencies_by_name
90
+ @dependencies_by_name ||= T.let(
91
+ @dependencies.each_with_object({}) do |dep, hash|
92
+ hash[dep.name] = dep
93
+ end,
94
+ T.nilable(T::Hash[String, Dependabot::Dependency])
95
+ )
96
+ end
97
+
98
+ sig { params(dependency: Dependabot::Dependency).returns(T::Array[Dependabot::Dependency]) }
88
99
  def safe_fetch_subdependencies(dependency)
89
100
  return [] if @errored_fetching_subdependencies
90
101
 
91
- fetch_subdependencies(dependency)
102
+ fetch_subdependencies(dependency).filter_map do |dependency_name|
103
+ dependencies_by_name[dependency_name]
104
+ end
92
105
  rescue StandardError => e
93
106
  @errored_fetching_subdependencies = true
94
107
  Dependabot.logger.error("Error fetching subdependencies: #{e.message}")
@@ -180,7 +180,7 @@ module Dependabot
180
180
  sig { params(files: T::Array[T.untyped]).returns(T.untyped) }
181
181
  def select_best_changelog(files)
182
182
  CHANGELOG_NAMES.each do |name|
183
- candidates = files.select { |f| f.name =~ /#{name}/i }
183
+ candidates = files.select { |f| f.name =~ /\A#{name}/i }
184
184
  file = candidates.first if candidates.one?
185
185
  file ||=
186
186
  candidates.find do |f|
@@ -158,6 +158,26 @@ module Dependabot
158
158
  if releases.count > filtered.count
159
159
  Dependabot.logger.info("Filtered out #{releases.count - filtered.count} versions due to cooldown")
160
160
  end
161
+
162
+ # If all releases were filtered out due to cooldown and we have a current version, use it as fallback
163
+ if filtered.empty? && !releases.empty? && dependency.version
164
+ current_version_str = dependency.version
165
+
166
+ Dependabot.logger.info(
167
+ "All versions filtered by cooldown for #{dependency.name}, " \
168
+ "falling back to current version #{current_version_str}"
169
+ )
170
+
171
+ # Create a PackageRelease for the current version
172
+ current_version = version_class.new(current_version_str)
173
+ current_release = Dependabot::Package::PackageRelease.new(
174
+ version: current_version,
175
+ released_at: nil,
176
+ tag: nil
177
+ )
178
+ return [current_release]
179
+ end
180
+
161
181
  filtered
162
182
  end
163
183
 
data/lib/dependabot.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Dependabot
5
- VERSION = "0.348.1"
5
+ VERSION = "0.350.0"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.348.1
4
+ version: 0.350.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -629,7 +629,7 @@ licenses:
629
629
  - MIT
630
630
  metadata:
631
631
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
632
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.348.1
632
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.350.0
633
633
  rdoc_options: []
634
634
  require_paths:
635
635
  - lib