dependabot-pub 0.397.0 → 0.398.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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d3f347c5026b0a38c8b5dcd1fe34d5bf086c5232a298d8e4ee53a2a2c77675ee
|
|
4
|
+
data.tar.gz: c63bbc442dd89bd2e88381c1f8636783a96ea1e3ce4dcf8e1107182922e575c3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5da945c408909041abb77106389039e7d6131086dc5516411d071a248779d9cdcdd1264680f6f768dac9bb54eb6730cdcfc857537b5bcee8233042a71f4ebae0
|
|
7
|
+
data.tar.gz: 795b73580e3d48ddf10362fc1e89bc10f8dd964022434eacbeea5f3feb91cb7478ccf9d1edaa8d3d79e132a07e167358d7bae21d119b7e496290f2eec0176688
|
|
@@ -63,8 +63,9 @@ module Dependabot
|
|
|
63
63
|
|
|
64
64
|
sig { params(dependency: Dependabot::Dependency).returns(String) }
|
|
65
65
|
def repository_url(dependency)
|
|
66
|
-
RequirementSource.new(dependency.requirements.first).description_string("url") ||
|
|
67
|
-
|
|
66
|
+
repository_url = RequirementSource.new(dependency.requirements.first).description_string("url") ||
|
|
67
|
+
options[:pub_hosted_url] || "https://pub.dev"
|
|
68
|
+
repository_url.delete_suffix("/")
|
|
68
69
|
end
|
|
69
70
|
|
|
70
71
|
sig { params(dependency: Dependabot::Dependency).returns(T::Hash[String, T.untyped]) }
|
|
@@ -24,7 +24,7 @@ module Dependabot
|
|
|
24
24
|
result.commit = source.description_string("resolved-ref")
|
|
25
25
|
return result
|
|
26
26
|
end
|
|
27
|
-
repository_url = source.description_string("url") || "https://pub.dev"
|
|
27
|
+
repository_url = (source.description_string("url") || "https://pub.dev").delete_suffix("/")
|
|
28
28
|
|
|
29
29
|
listing = repository_listing(repository_url)
|
|
30
30
|
repo = listing.dig("latest", "pubspec", "repository")
|
|
@@ -72,32 +72,29 @@ module Dependabot
|
|
|
72
72
|
|
|
73
73
|
sig { returns(T.any(T::Array[Dependabot::Package::PackageRelease], T.untyped)) }
|
|
74
74
|
def package_details_metadata
|
|
75
|
-
|
|
76
|
-
T.let({}, T::Hash[String, T.untyped])
|
|
77
|
-
|
|
78
|
-
Dependabot.logger.error("Initializing package metadata for \"#{@dependency.name}\"")
|
|
75
|
+
Dependabot.logger.info("Initializing package metadata for \"#{@dependency.name}\"")
|
|
79
76
|
|
|
80
77
|
response = fetch_package_metadata(dependency)
|
|
81
|
-
return
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
rescue JSON::ParserError
|
|
95
|
-
Dependabot.logger.error("Failed to parse package metadata")
|
|
96
|
-
package_releases
|
|
78
|
+
return [] if response.status >= 500
|
|
79
|
+
|
|
80
|
+
versions = JSON.parse(response.body).fetch("versions", [])
|
|
81
|
+
|
|
82
|
+
# Build the full list up front. If any release can't be parsed (e.g. a
|
|
83
|
+
# missing or invalid publish date) the partial result is discarded, so
|
|
84
|
+
# callers can treat a non-empty list as a complete, trustworthy snapshot
|
|
85
|
+
# and an empty list as "no usable metadata".
|
|
86
|
+
versions.map do |v|
|
|
87
|
+
package_release(
|
|
88
|
+
version: v["version"],
|
|
89
|
+
publish_date: Time.parse(v["published"])
|
|
90
|
+
)
|
|
97
91
|
end
|
|
92
|
+
rescue JSON::ParserError
|
|
93
|
+
Dependabot.logger.error("Failed to parse package metadata")
|
|
94
|
+
[]
|
|
98
95
|
rescue StandardError => e
|
|
99
96
|
Dependabot.logger.error("Failed to fetch package metadata #{e.message}")
|
|
100
|
-
|
|
97
|
+
[]
|
|
101
98
|
end
|
|
102
99
|
|
|
103
100
|
private
|
|
@@ -7,6 +7,7 @@ require "dependabot/update_checkers/version_filters"
|
|
|
7
7
|
require "dependabot/registry_client"
|
|
8
8
|
require "dependabot/pub/package/package_details_fetcher"
|
|
9
9
|
require "dependabot/package/package_latest_version_finder"
|
|
10
|
+
require "dependabot/update_checkers/cooldown_calculation"
|
|
10
11
|
require "sorbet-runtime"
|
|
11
12
|
|
|
12
13
|
module Dependabot
|
|
@@ -119,6 +120,47 @@ module Dependabot
|
|
|
119
120
|
return unparsed_version unless cooldown_options
|
|
120
121
|
|
|
121
122
|
@package_details ||= T.let(
|
|
123
|
+
package_details_fetcher.package_details_metadata,
|
|
124
|
+
T.nilable(T::Array[Dependabot::Package::PackageRelease])
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
version_release = @package_details.find do |release|
|
|
128
|
+
release.version.to_s == unparsed_version
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
if version_release&.released_at
|
|
132
|
+
return unparsed_version unless in_cooldown_period?(version_release)
|
|
133
|
+
|
|
134
|
+
return dependency.version
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# No dated release for this candidate. A Pub release always carries a
|
|
138
|
+
# publication date, so a candidate is only missing here for one of two
|
|
139
|
+
# reasons, handled differently:
|
|
140
|
+
#
|
|
141
|
+
# metadata present, candidate absent -> the date source is healthy and the
|
|
142
|
+
# candidate simply isn't published on pub.dev (the resolver and registry
|
|
143
|
+
# listings diverge). Skip cooldown quietly.
|
|
144
|
+
#
|
|
145
|
+
# metadata empty -> we have no dates at all, so cooldown can't be applied.
|
|
146
|
+
# Surface the shared "cooldown not applied" notice, matching docker/common.
|
|
147
|
+
unless @package_details.empty?
|
|
148
|
+
Dependabot.logger.info(
|
|
149
|
+
"No matching release metadata for #{dependency.name} #{unparsed_version}; skipping cooldown"
|
|
150
|
+
)
|
|
151
|
+
return unparsed_version
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
record_cooldown_date_unavailable(unparsed_version)
|
|
155
|
+
unparsed_version
|
|
156
|
+
rescue StandardError => e
|
|
157
|
+
Dependabot.logger.error("Failed to filter cooldown versions for \"#{dependency.name}\": #{e.backtrace}")
|
|
158
|
+
unparsed_version
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
sig { returns(PackageDetailsFetcher) }
|
|
162
|
+
def package_details_fetcher
|
|
163
|
+
@package_details_fetcher ||= T.let(
|
|
122
164
|
PackageDetailsFetcher.new(
|
|
123
165
|
dependency: dependency,
|
|
124
166
|
dependency_files: dependency_files,
|
|
@@ -126,27 +168,46 @@ module Dependabot
|
|
|
126
168
|
ignored_versions: ignored_versions,
|
|
127
169
|
security_advisories: security_advisories,
|
|
128
170
|
options: options
|
|
129
|
-
)
|
|
130
|
-
T.nilable(
|
|
171
|
+
),
|
|
172
|
+
T.nilable(PackageDetailsFetcher)
|
|
131
173
|
)
|
|
174
|
+
end
|
|
132
175
|
|
|
133
|
-
|
|
176
|
+
sig { params(unparsed_version: String).void }
|
|
177
|
+
def record_cooldown_date_unavailable(unparsed_version)
|
|
178
|
+
return unless version_class.correct?(unparsed_version)
|
|
134
179
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
end
|
|
180
|
+
new_version = version_class.new(unparsed_version)
|
|
181
|
+
current_version = version_class.correct?(dependency.version) ? version_class.new(dependency.version) : nil
|
|
138
182
|
|
|
139
|
-
|
|
183
|
+
# Nothing to cool down when the candidate isn't an upgrade, or when it is
|
|
184
|
+
# ignored and would be discarded anyway; mirrors the common cooldown
|
|
185
|
+
# tracker's relevance check and avoids job-wide warnings when no update can
|
|
186
|
+
# be produced.
|
|
187
|
+
return if current_version && new_version <= current_version
|
|
188
|
+
return if ignored?(new_version)
|
|
140
189
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
190
|
+
Dependabot.logger.info(
|
|
191
|
+
"No publication date available for #{dependency.name} #{unparsed_version}; cooldown not applied"
|
|
192
|
+
)
|
|
193
|
+
Dependabot::UpdateCheckers::CooldownCalculation.mark_cooldown_date_unavailable(
|
|
194
|
+
dependency,
|
|
195
|
+
cooldown_days: cooldown_days_for(current_version, new_version)
|
|
196
|
+
)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
sig { params(version: Dependabot::Version).returns(T::Boolean) }
|
|
200
|
+
def ignored?(version)
|
|
201
|
+
requirements = ignored_versions.flat_map do |requirement|
|
|
202
|
+
dependency.requirement_class.requirements_array(requirement)
|
|
203
|
+
end
|
|
204
|
+
requirements.any? { |requirement| requirement.satisfied_by?(version) }
|
|
145
205
|
end
|
|
146
206
|
|
|
147
207
|
sig { params(release: Dependabot::Package::PackageRelease).returns(T::Boolean) }
|
|
148
208
|
def in_cooldown_period?(release)
|
|
149
|
-
|
|
209
|
+
released_at = release.released_at
|
|
210
|
+
unless released_at
|
|
150
211
|
Dependabot.logger.info("Release date not available for version #{release.version}")
|
|
151
212
|
return false
|
|
152
213
|
end
|
|
@@ -155,7 +216,7 @@ module Dependabot
|
|
|
155
216
|
days = cooldown_days_for(current_version, release.version)
|
|
156
217
|
|
|
157
218
|
# Calculate the number of seconds passed since the release
|
|
158
|
-
passed_seconds = Time.now.to_i -
|
|
219
|
+
passed_seconds = Time.now.to_i - released_at.to_i
|
|
159
220
|
passed_days = passed_seconds / DAY_IN_SECONDS
|
|
160
221
|
|
|
161
222
|
if passed_days < days
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-pub
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.398.0
|
|
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.
|
|
18
|
+
version: 0.398.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.
|
|
25
|
+
version: 0.398.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: debug
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -260,7 +260,7 @@ licenses:
|
|
|
260
260
|
- MIT
|
|
261
261
|
metadata:
|
|
262
262
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
263
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
263
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.398.0
|
|
264
264
|
rdoc_options: []
|
|
265
265
|
require_paths:
|
|
266
266
|
- lib
|