Class: Dependabot::Terraform::UpdateChecker::LatestVersionResolver
- Inherits:
-
Object
- Object
- Dependabot::Terraform::UpdateChecker::LatestVersionResolver
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/terraform/update_checker/latest_version_resolver.rb
Constant Summary collapse
- DAY_IN_SECONDS =
T.let(24 * 60 * 60, Integer)
Instance Attribute Summary collapse
-
#credentials ⇒ Object
readonly
Returns the value of attribute credentials.
-
#dependency ⇒ Object
readonly
Returns the value of attribute dependency.
-
#git_commit_checker ⇒ Object
readonly
Returns the value of attribute git_commit_checker.
Instance Method Summary collapse
- #check_if_version_in_cooldown_period?(release_date) ⇒ Boolean
- #filter_versions_in_cooldown_period_from_module(versions) ⇒ Object
- #filter_versions_in_cooldown_period_from_provider(versions) ⇒ Object
-
#initialize(dependency:, credentials:, cooldown_options:, git_commit_checker:) ⇒ LatestVersionResolver
constructor
A new instance of LatestVersionResolver.
- #package_details_fetcher ⇒ Object
- #release_date_to_seconds(release_date) ⇒ Object
- #select_tags_which_in_cooldown_from_module ⇒ Object
- #select_tags_which_in_cooldown_from_provider ⇒ Object
Constructor Details
#initialize(dependency:, credentials:, cooldown_options:, git_commit_checker:) ⇒ LatestVersionResolver
Returns a new instance of LatestVersionResolver.
25 26 27 28 29 30 31 32 33 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 25 def initialize(dependency:, credentials:, cooldown_options:, git_commit_checker:) @dependency = dependency @credentials = credentials @cooldown_options = @git_commit_checker = T.let( git_commit_checker, Dependabot::GitCommitChecker ) end |
Instance Attribute Details
#credentials ⇒ Object (readonly)
Returns the value of attribute credentials.
159 160 161 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 159 def credentials @credentials end |
#dependency ⇒ Object (readonly)
Returns the value of attribute dependency.
36 37 38 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 36 def dependency @dependency end |
#git_commit_checker ⇒ Object (readonly)
Returns the value of attribute git_commit_checker.
156 157 158 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 156 def git_commit_checker @git_commit_checker end |
Instance Method Details
#check_if_version_in_cooldown_period?(release_date) ⇒ Boolean
91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 91 def check_if_version_in_cooldown_period?(release_date) return false unless release_date.length.positive? cooldown = @cooldown_options return false unless cooldown return false if cooldown.nil? # Calculate the number of seconds passed since the release passed_seconds = Time.now.to_i - release_date_to_seconds(release_date) # Check if the release is within the cooldown period passed_seconds < cooldown.default_days * DAY_IN_SECONDS end |
#filter_versions_in_cooldown_period_from_module(versions) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 69 def filter_versions_in_cooldown_period_from_module(versions) # to make call for registry to get the versions # step one fetch allowed version tags and # sort the allowed version tags by name in descending order &.each do |tag_name| # Iterate through versions and filter out those matching the tag_name versions.reject! do |version| version.to_s == tag_name end end Dependabot.logger.info( "filter_versions_in_cooldown_period_from_module:: Allowed version tags after filtering versions in cooldown:#{versions.join(', ')}" ) versions rescue StandardError => e Dependabot.logger.error("Error fetching latest version tag: #{e.}") versions end |
#filter_versions_in_cooldown_period_from_provider(versions) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 43 def filter_versions_in_cooldown_period_from_provider(versions) # to make call for registry to get the versions # step one fetch allowed version tags and # sort the allowed version tags by name in descending order &.each do |tag_name| # Iterate through versions and filter out those matching the tag_name versions.reject! do |version| version.to_s == tag_name end end Dependabot.logger.info( "Allowed version tags after filtering versions in cooldown: #{versions.join(', ')}" ) versions rescue StandardError => e Dependabot.logger.error("Error filter_versions_in_cooldown_period_from_provider(versions): #{e.}") versions end |
#package_details_fetcher ⇒ Object
144 145 146 147 148 149 150 151 152 153 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 144 def package_details_fetcher @package_details_fetcher ||= T.let( Package::PackageDetailsFetcher.new( dependency: dependency, credentials: credentials, git_commit_checker: git_commit_checker ), T.nilable(Package::PackageDetailsFetcher) ) end |
#release_date_to_seconds(release_date) ⇒ Object
106 107 108 109 110 111 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 106 def release_date_to_seconds(release_date) Time.parse(release_date).to_i rescue ArgumentError => e Dependabot.logger.error("Invalid release date format: #{release_date} and error: #{e.}") 0 # Default to 360 days in seconds if parsing fails, so that it will not be in cooldown end |
#select_tags_which_in_cooldown_from_module ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 129 def = T.let([], T::Array[String]) package_details_fetcher.fetch_tag_and_release_date_from_module.each do |git_tag_with_detail| if check_if_version_in_cooldown_period?(T.must(git_tag_with_detail.release_date)) << git_tag_with_detail.tag end end rescue StandardError => e Dependabot.logger.error("Error checking if version is in cooldown: #{e.}") end |
#select_tags_which_in_cooldown_from_provider ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/dependabot/terraform/update_checker/latest_version_resolver.rb', line 114 def = T.let([], T::Array[String]) package_details_fetcher.fetch_tag_and_release_date_from_provider.each do |git_tag_with_detail| if check_if_version_in_cooldown_period?(T.must(git_tag_with_detail.release_date)) << git_tag_with_detail.tag end end rescue StandardError => e Dependabot.logger.error("Error checking if version is in cooldown: #{e.}") end |