Class: MilkTea::PackageRegistryMetadataProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/milk_tea/packages/registry_metadata_provider.rb

Instance Method Summary collapse

Constructor Details

#initialize(registry_store: PackageRegistryStore.new) ⇒ PackageRegistryMetadataProvider

Returns a new instance of PackageRegistryMetadataProvider.



7
8
9
# File 'lib/milk_tea/packages/registry_metadata_provider.rb', line 7

def initialize(registry_store: PackageRegistryStore.new)
  @registry_store = registry_store
end

Instance Method Details

#available_versions(package_name) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/milk_tea/packages/registry_metadata_provider.rb', line 11

def available_versions(package_name)
  @registry_store.available_versions(package_name).map do |version_text|
    PackageVersion.parse(version_text, label: "registry package #{package_name} version")
  end.sort.reverse
rescue PackageRegistryStoreError, PackageVersionError => e
  raise PackageRegistryMetadataProviderError, e.message
end

#manifest_for(package_name, version) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/milk_tea/packages/registry_metadata_provider.rb', line 19

def manifest_for(package_name, version)
  version_text = version.to_s
  package_root = @registry_store.published_root_for(package_name, version_text, sync: true)

  manifest = PackageManifest.load(package_root)
  if manifest.package_name != package_name || manifest.package_version != version_text
    raise PackageRegistryMetadataProviderError,
          "registry package at #{manifest.manifest_path} resolved to #{manifest.package_name}@#{manifest.package_version.inspect}; expected #{package_name}@#{version_text}"
  end

  manifest
rescue PackageManifestError, PackageRegistryStoreError => e
  raise PackageRegistryMetadataProviderError, e.message
end