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
# File 'lib/dependabot/git_submodules/package/package_details_fetcher.rb', line 41

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

  # 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

  # as git submodules do not have versions (refs/tags are used instead), we use a pseudo version as placeholder
  pseudo_version = T.must().length + 1

  T.must().flat_map do |version_details|
    (version_details, sha_to_tags, pseudo_version -= 1)
  end
end