Module: Dependabot::UpdateCheckers::CooldownCalculation

Extended by:
T::Sig
Defined in:
lib/dependabot/update_checkers/cooldown_calculation.rb

Overview

Shared utility module for cooldown period calculations.

Provides stateless module methods used by ecosystem update checkers to determine whether a release is within its cooldown window and how many cooldown days apply for a given version bump.

Constant Summary collapse

DAY_IN_SECONDS =
T.let(24 * 60 * 60, Integer)

Class Method Summary collapse

Class Method Details

.cooldown_days_for(cooldown, current_version, new_version) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/dependabot/update_checkers/cooldown_calculation.rb', line 34

def self.cooldown_days_for(cooldown, current_version, new_version)
  return cooldown.default_days unless current_version

  cooldown.cooldown_days_for(
    current_version.semver_parts,
    new_version.semver_parts
  )
end

.skip_cooldown?(cooldown, dependency_name, cooldown_enabled: true) ⇒ Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/dependabot/update_checkers/cooldown_calculation.rb', line 50

def self.skip_cooldown?(cooldown, dependency_name, cooldown_enabled: true)
  cooldown.nil? || !cooldown_enabled || !cooldown.included?(dependency_name)
end

.within_cooldown_window?(release_date, cooldown_days) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
# File 'lib/dependabot/update_checkers/cooldown_calculation.rb', line 21

def self.within_cooldown_window?(release_date, cooldown_days)
  return false if cooldown_days <= 0

  (Time.now.to_i - release_date.to_i) < (cooldown_days * DAY_IN_SECONDS)
end