Class: MilkTea::PackageSourceFetcher

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

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Constructor Details

#initialize(source_cache: PackageSourceCache.new, source_resolver: PackageSourceResolver.new(source_cache: source_cache), registry_store: PackageRegistryStore.new) ⇒ PackageSourceFetcher

Returns a new instance of PackageSourceFetcher.



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

def initialize(source_cache: PackageSourceCache.new, source_resolver: PackageSourceResolver.new(source_cache: source_cache), registry_store: PackageRegistryStore.new)
  @source_cache = source_cache
  @source_resolver = source_resolver
  @registry_store = registry_store
end

Instance Method Details

#fetch_locked_sources(path) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/milk_tea/packages/source_fetcher.rb', line 18

def fetch_locked_sources(path)
  locked_packages = PackageLock.locked_packages(path, source_resolver: @source_resolver)
  locked_packages.select { |package| package.identity.cacheable? }.map do |package|
    fetch_locked_package(package)
  end
rescue PackageLockError => e
  raise PackageSourceFetcherError, e.message
end

#materialize_identity(package_name:, identity:) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/milk_tea/packages/source_fetcher.rb', line 27

def materialize_identity(package_name:, identity:)
  expected_manifest_path = @source_cache.manifest_path_for(identity)

  case identity
  when PackageSourceResolver::RegistryIdentity
    fetch_registry_package(package_name, identity, expected_manifest_path)
  when PackageSourceResolver::GitIdentity
    fetch_git_package(package_name, identity, expected_manifest_path)
  else
    raise PackageSourceFetcherError,
          "package source kind #{identity.kind.inspect} is not fetchable"
  end
rescue PackageSourceCacheError => e
  raise PackageSourceFetcherError, e.message
rescue PackageRegistryStoreError => e
  raise PackageSourceFetcherError, e.message
end