Class: Dependabot::Gradle::Package::ReleaseDateExtractor

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/gradle/package/release_date_extractor.rb

Overview

Extracts release dates from repository metadata to support the cooldown feature. Handles multiple repository formats (Maven Central HTML listings, Gradle Plugin Portal XML).

Instance Method Summary collapse

Constructor Details

#initialize(dependency_name:, version_class:) ⇒ ReleaseDateExtractor

Returns a new instance of ReleaseDateExtractor.



23
24
25
26
# File 'lib/dependabot/gradle/package/release_date_extractor.rb', line 23

def initialize(dependency_name:, version_class:)
  @dependency_name = dependency_name
  @version_class = version_class
end

Instance Method Details

#extract(repositories:, dependency_metadata_fetcher:, release_info_metadata_fetcher:) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/dependabot/gradle/package/release_date_extractor.rb', line 44

def extract(repositories:, dependency_metadata_fetcher:, release_info_metadata_fetcher:)
  release_date_info = T.let({}, T::Hash[String, T::Hash[Symbol, T.untyped]])

  begin
    repositories.each do |repository_details|
      parse_gradle_plugin_portal_release(
        repository_details,
        release_date_info,
        
      )

      parse_maven_central_releases(
        repository_details,
        release_date_info,
        
      )
    end

    release_date_info
  rescue StandardError => e
    Dependabot.logger.error(
      "Failed to get release date for #{@dependency_name}: #{e.class} - #{e.message}"
    )
    Dependabot.logger.error(e.backtrace&.join("\n") || "No backtrace available")
    {}
  end
end