Class: Dependabot::Julia::Package::PackageDetailsFetcher

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

Constant Summary collapse

PACKAGE_LANGUAGE =
"julia"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dependency:, credentials:, custom_registries: []) ⇒ PackageDetailsFetcher

Returns a new instance of PackageDetailsFetcher.



25
26
27
28
29
# File 'lib/dependabot/julia/package/package_details_fetcher.rb', line 25

def initialize(dependency:, credentials:, custom_registries: [])
  @dependency = dependency
  @credentials = credentials
  @custom_registries = custom_registries
end

Instance Attribute Details

#credentialsObject (readonly)

Returns the value of attribute credentials.



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

def credentials
  @credentials
end

#custom_registriesObject (readonly)

Returns the value of attribute custom_registries.



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

def custom_registries
  @custom_registries
end

#dependencyObject (readonly)

Returns the value of attribute dependency.



32
33
34
# File 'lib/dependabot/julia/package/package_details_fetcher.rb', line 32

def dependency
  @dependency
end

Instance Method Details

#fetch_package_releasesObject



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

def fetch_package_releases
  releases = T.let([], T::Array[Dependabot::Package::PackageRelease])

  begin
    registry_client = RegistryClient.new(
      credentials: credentials,
      custom_registries: custom_registries
    )
    uuid = T.cast(dependency.[:julia_uuid], T.nilable(String))

    # Fetch all available versions
    available_versions = registry_client.fetch_available_versions(dependency.name, uuid)
    return releases if available_versions.empty?

    releases = build_releases_for_versions(registry_client, available_versions, uuid)
    mark_latest_release(releases)

    releases
  rescue StandardError => e
    Dependabot.logger.error("Error while fetching package releases for #{dependency.name}: #{e.message}")
    releases
  end
end