Class: Dependabot::Sbt::Package::PackageDetailsFetcher

Inherits:
Maven::Shared::SharedPackageDetailsFetcher
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/sbt/package/package_details_fetcher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dependency:, dependency_files:, credentials:) ⇒ PackageDetailsFetcher

Returns a new instance of PackageDetailsFetcher.



28
29
30
31
32
33
34
35
36
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 28

def initialize(dependency:, dependency_files:, credentials:)
  @dependency = T.let(dependency, Dependabot::Dependency)
  @dependency_files = T.let(dependency_files, T::Array[Dependabot::DependencyFile])
  @credentials = T.let(credentials, T::Array[Dependabot::Credential])

  @repositories_cache = T.let(nil, T.nilable(T::Array[T::Hash[String, T.untyped]]))
  @repository_finder = T.let(nil, T.nilable(Sbt::FileParser::RepositoriesFinder))
  @package_details = T.let(nil, T.nilable(Dependabot::Package::PackageDetails))
end

Instance Attribute Details

#credentialsObject (readonly)

Returns the value of attribute credentials.



45
46
47
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 45

def credentials
  @credentials
end

#dependencyObject (readonly)

Returns the value of attribute dependency.



39
40
41
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 39

def dependency
  @dependency
end

#dependency_filesObject (readonly)

Returns the value of attribute dependency_files.



42
43
44
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 42

def dependency_files
  @dependency_files
end

Instance Method Details

#central_repo_urlObject



89
90
91
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 89

def central_repo_url
  Sbt::FileParser::RepositoriesFinder::CENTRAL_REPO_URL
end

#dependency_files_url(repository_url, version) ⇒ Object



97
98
99
100
101
102
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 97

def dependency_files_url(repository_url, version)
  _, artifact_id = dependency_parts
  base_url = dependency_base_url(repository_url)

  "#{base_url}/#{version}/#{artifact_id}-#{version}.jar"
end

#dependency_partsObject



108
109
110
111
112
113
114
115
116
117
118
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 108

def dependency_parts
  @dependency_parts = T.let(@dependency_parts, T.nilable([String, String]))
  return @dependency_parts if @dependency_parts

  group_id, artifact_id = dependency.name.split(":")
  group_path = T.must(group_id).tr(".", "/")

  artifact_id = "#{artifact_id}_#{plugin_scala_version}_#{sbt_binary_version}" if sbt_plugin?

  @dependency_parts = [group_path, T.must(artifact_id)]
end

#fetchObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 48

def fetch
  return @package_details if @package_details

  releases = versions.map do |version_details|
    Dependabot::Package::PackageRelease.new(
      version: version_details.fetch(:version),
      released_at: version_details.fetch(:release_date, nil),
      url: version_details.fetch(:source_url)
    )
  end

  @package_details = Dependabot::Package::PackageDetails.new(
    dependency: dependency,
    releases: releases
  )

  @package_details
end

#releasesObject



68
69
70
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 68

def releases
  fetch.releases
end

#repositoriesObject



74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/dependabot/sbt/package/package_details_fetcher.rb', line 74

def repositories
  return @repositories_cache if @repositories_cache

  @repositories_cache = credentials_repository_details

  sbt_repository_details.each do |repo|
    @repositories_cache << repo unless @repositories_cache.any? do |r|
      r[URL_KEY] == repo[URL_KEY]
    end
  end

  @repositories_cache
end