dependabot-common 0.368.0 → 0.369.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: 3c25acad8cb0f120b8d120817720c6ce88f8706d7f01a90d6866aa1040c0d7f6
4
- data.tar.gz: 16f00b502775dcd9138151c7c897fd4515818606e2786a648e00fdb05514e3ad
3
+ metadata.gz: 97fcef0209b5b2952117cc5243bafe7197d64e5f2a580e67ad49150ec48e9e15
4
+ data.tar.gz: 346323c2b42a8867babee2db48e172c481ba9ff1db34bf27cd5b13524fbc20ce
5
5
  SHA512:
6
- metadata.gz: 1898c4f3c9a12977bbfd56734074d4924db3b7d5e225784e4e159a9d1005fcd8fee8d285fb879709b2c26c1492d1541958bcbb730da338e6dcb57a5ca26d1542
7
- data.tar.gz: ec18e45926c7d9a1e3fab40a4834de013d23dc7f43600c8060d44be6c50501d1e4d5b3f2d0cf6c9b0011140f378a569cc76171ec18bbe2536ea5141520751fb8
6
+ metadata.gz: 23598cbf345a9739f2d70bc0a61f144b73d941fda669b8eb5f98a33780d3630de6606e10901930279dc6884699f959f2c632fcedf2645c7831fd0ecaf2a71f36
7
+ data.tar.gz: '037492b04dc67c83c2a83fcd9779231ed396cab4e5495d8647c9d6586a12e6283f72642c4ad6e5bc76581dcc41a6f8385bacaee47854dde6ceb9d4dc20af9b55'
@@ -9,6 +9,7 @@ require "sorbet-runtime"
9
9
  require "dependabot/security_advisory"
10
10
  require "dependabot/dependency"
11
11
  require "dependabot/update_checkers/version_filters"
12
+ require "dependabot/update_checkers/cooldown_calculation"
12
13
  require "dependabot/registry_client"
13
14
  require "dependabot/package/package_details"
14
15
  require "dependabot/package/release_cooldown_options"
@@ -19,8 +20,6 @@ module Dependabot
19
20
  extend T::Sig
20
21
  extend T::Helpers
21
22
 
22
- DAY_IN_SECONDS = T.let(24 * 60 * 60, Integer)
23
-
24
23
  abstract!
25
24
 
26
25
  sig { returns(Dependabot::Dependency) }
@@ -202,13 +201,18 @@ module Dependabot
202
201
  def in_cooldown_period?(release)
203
202
  return false unless release.released_at
204
203
 
205
- current_version = version_class.correct?(dependency.version) ? version_class.new(dependency.version) : nil
206
- days = cooldown_days_for(current_version, release.version)
204
+ cooldown = @cooldown_options
205
+ return false if Dependabot::UpdateCheckers::CooldownCalculation.skip_cooldown?(
206
+ cooldown, dependency.name, cooldown_enabled: cooldown_enabled?
207
+ )
207
208
 
208
- # Calculate the number of seconds passed since the release
209
- passed_seconds = Time.now.to_i - release.released_at.to_i
210
- # Check if the release is within the cooldown period
211
- passed_seconds < days * DAY_IN_SECONDS
209
+ current_version = version_class.correct?(dependency.version) ? version_class.new(dependency.version) : nil
210
+ days = Dependabot::UpdateCheckers::CooldownCalculation.cooldown_days_for(
211
+ T.must(cooldown), current_version, release.version
212
+ )
213
+ Dependabot::UpdateCheckers::CooldownCalculation.within_cooldown_window?(
214
+ T.must(release.released_at), days
215
+ )
212
216
  end
213
217
 
214
218
  sig do
@@ -308,27 +312,13 @@ module Dependabot
308
312
  end
309
313
  def cooldown_days_for(current_version, new_version)
310
314
  cooldown = @cooldown_options
311
- return 0 if cooldown.nil?
312
- return 0 unless cooldown_enabled?
313
- return 0 unless cooldown.included?(dependency.name)
314
- return cooldown.default_days if current_version.nil?
315
-
316
- current_version_semver = current_version.semver_parts
317
- new_version_semver = new_version.semver_parts
318
-
319
- # If semver_parts is nil for either, return default cooldown
320
- return cooldown.default_days if current_version_semver.nil? || new_version_semver.nil?
321
-
322
- # Ensure values are always integers
323
- current_major, current_minor, current_patch = current_version_semver
324
- new_major, new_minor, new_patch = new_version_semver
325
-
326
- # Determine cooldown based on version difference
327
- return cooldown.semver_major_days if new_major > current_major
328
- return cooldown.semver_minor_days if new_minor > current_minor
329
- return cooldown.semver_patch_days if new_patch > current_patch
315
+ return 0 if Dependabot::UpdateCheckers::CooldownCalculation.skip_cooldown?(
316
+ cooldown, dependency.name, cooldown_enabled: cooldown_enabled?
317
+ )
330
318
 
331
- cooldown.default_days
319
+ Dependabot::UpdateCheckers::CooldownCalculation.cooldown_days_for(
320
+ T.must(cooldown), current_version, new_version
321
+ )
332
322
  end
333
323
 
334
324
  sig { returns(T::Boolean) }
@@ -54,6 +54,29 @@ module Dependabot
54
54
  @include.empty? || @include.any? { |pattern| File.fnmatch?(pattern, dependency_name) }
55
55
  end
56
56
 
57
+ sig do
58
+ params(
59
+ current_semver: T.nilable([Integer, Integer, Integer]),
60
+ new_semver: T.nilable([Integer, Integer, Integer])
61
+ ).returns(Integer)
62
+ end
63
+ def cooldown_days_for(current_semver, new_semver)
64
+ return @default_days if current_semver.nil? || new_semver.nil?
65
+
66
+ current_major, current_minor, current_patch = current_semver
67
+ new_major, new_minor, new_patch = new_semver
68
+
69
+ return @semver_major_days if new_major > current_major
70
+
71
+ if new_major == current_major
72
+ return @semver_minor_days if new_minor > current_minor
73
+ return @semver_patch_days if new_minor == current_minor &&
74
+ new_patch > current_patch
75
+ end
76
+
77
+ @default_days
78
+ end
79
+
57
80
  private
58
81
 
59
82
  sig { params(dependency_name: String).returns(T::Boolean) }
@@ -0,0 +1,55 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ require "sorbet-runtime"
5
+ require "dependabot/package/release_cooldown_options"
6
+ require "dependabot/version"
7
+
8
+ module Dependabot
9
+ module UpdateCheckers
10
+ # Shared utility module for cooldown period calculations.
11
+ #
12
+ # Provides stateless module methods used by ecosystem update checkers
13
+ # to determine whether a release is within its cooldown window and
14
+ # how many cooldown days apply for a given version bump.
15
+ module CooldownCalculation
16
+ extend T::Sig
17
+
18
+ DAY_IN_SECONDS = T.let(24 * 60 * 60, Integer)
19
+
20
+ sig { params(release_date: Time, cooldown_days: Integer).returns(T::Boolean) }
21
+ def self.within_cooldown_window?(release_date, cooldown_days)
22
+ return false if cooldown_days <= 0
23
+
24
+ (Time.now.to_i - release_date.to_i) < (cooldown_days * DAY_IN_SECONDS)
25
+ end
26
+
27
+ sig do
28
+ params(
29
+ cooldown: Dependabot::Package::ReleaseCooldownOptions,
30
+ current_version: T.nilable(Dependabot::Version),
31
+ new_version: Dependabot::Version
32
+ ).returns(Integer)
33
+ end
34
+ def self.cooldown_days_for(cooldown, current_version, new_version)
35
+ return cooldown.default_days unless current_version
36
+
37
+ cooldown.cooldown_days_for(
38
+ current_version.semver_parts,
39
+ new_version.semver_parts
40
+ )
41
+ end
42
+
43
+ sig do
44
+ params(
45
+ cooldown: T.nilable(Dependabot::Package::ReleaseCooldownOptions),
46
+ dependency_name: String,
47
+ cooldown_enabled: T::Boolean
48
+ ).returns(T::Boolean)
49
+ end
50
+ def self.skip_cooldown?(cooldown, dependency_name, cooldown_enabled: true)
51
+ cooldown.nil? || !cooldown_enabled || !cooldown.included?(dependency_name)
52
+ end
53
+ end
54
+ end
55
+ end
data/lib/dependabot.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Dependabot
5
- VERSION = "0.368.0"
5
+ VERSION = "0.369.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.368.0
4
+ version: 0.369.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -603,6 +603,7 @@ files:
603
603
  - lib/dependabot/update_checkers.rb
604
604
  - lib/dependabot/update_checkers/README.md
605
605
  - lib/dependabot/update_checkers/base.rb
606
+ - lib/dependabot/update_checkers/cooldown_calculation.rb
606
607
  - lib/dependabot/update_checkers/version_filters.rb
607
608
  - lib/dependabot/utils.rb
608
609
  - lib/dependabot/version.rb
@@ -616,7 +617,7 @@ licenses:
616
617
  - MIT
617
618
  metadata:
618
619
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
619
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.368.0
620
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.369.0
620
621
  rdoc_options: []
621
622
  require_paths:
622
623
  - lib