Class: Dependabot::GitSubmodules::Package::PackageDetailsFetcher

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dependency:, credentials:) ⇒ PackageDetailsFetcher

Returns a new instance of PackageDetailsFetcher.



27
28
29
30
31
32
# File 'lib/dependabot/git_submodules/package/package_details_fetcher.rb', line 27

def initialize(dependency:, credentials:)
  @dependency = dependency
  @credentials = credentials

  @url = T.let(url, String)
end

Instance Attribute Details

#credentialsObject (readonly)

Returns the value of attribute credentials.



38
39
40
# File 'lib/dependabot/git_submodules/package/package_details_fetcher.rb', line 38

def credentials
  @credentials
end

#dependencyObject (readonly)

Returns the value of attribute dependency.



35
36
37
# File 'lib/dependabot/git_submodules/package/package_details_fetcher.rb', line 35

def dependency
  @dependency
end

Instance Method Details

#available_versionsObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/dependabot/git_submodules/package/package_details_fetcher.rb', line 41

def available_versions
   = T.let(fetch_tags_and_release_date, T.nilable(T::Array[GitTagWithDetail]))

  # as git submodules do not have versions (refs/tags are used instead), we use a pseudo version as placeholder
  pseudo_version = 1.0

  # we fallback to the git based tag info if no versions metadata is available
  if &.empty?
     = T.let(
      fetch_latest_tag_info,
      T.nilable(T::Array[GitTagWithDetail])
    )
  end

  releases = T.must().map do |version_details|
    Dependabot::Package::PackageRelease.new(
      version: GitSubmodules::Version.new((pseudo_version += 1).to_s),
      tag: version_details.tag,
      released_at: version_details.release_date ? Time.parse(T.must(version_details.release_date)) : nil
    )
  end

  releases
end