Skip to content

Commit 0d77321

Browse files
committed
WIP RegistryPackageContainer integration
1 parent 519d681 commit 0d77321

File tree

1 file changed

+40
-17
lines changed

1 file changed

+40
-17
lines changed

Sources/Workspace/Workspace.swift

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Foundation
1515
import PackageLoading
1616
import PackageModel
1717
import PackageGraph
18+
import PackageRegistry
1819
import SourceControl
1920

2021
/// Enumeration of the different reasons for which the resolver needs to be run.
@@ -1045,27 +1046,49 @@ extension Workspace: PackageContainerProvider {
10451046
}
10461047
}
10471048

1048-
// Resolve the container using the repository manager.
1049-
repositoryManager.lookup(repository: package.repository, skipUpdate: skipUpdate, on: queue) { result in
1049+
// If it's a dependency from a package registry
1050+
if let _ = package.identity.scopeAndName {
1051+
// TODO: get scoped registry from configuration
1052+
let registryBaseURL = URL(string: "https://packages.example.com")!
1053+
1054+
// FIXME: cache registry manager instances by base URL
1055+
let registryManager = RegistryManager(registryBaseURL: registryBaseURL, identityResolver: identityResolver, diagnosticEngine: nil)
1056+
let container = RegistryPackageContainer(
1057+
package: package,
1058+
identityResolver: identityResolver,
1059+
manager: registryManager,
1060+
manifestLoader: manifestLoader,
1061+
toolsVersionLoader: toolsVersionLoader,
1062+
currentToolsVersion: currentToolsVersion
1063+
)
10501064
queue.async {
1051-
// Create the container wrapper.
1052-
let result = result.tryMap { handle -> PackageContainer in
1053-
// Open the repository.
1054-
//
1055-
// FIXME: Do we care about holding this open for the lifetime of the container.
1056-
let repository = try handle.open()
1057-
return RepositoryPackageContainer(
1058-
package: package,
1059-
identityResolver: self.identityResolver,
1060-
repository: repository,
1061-
manifestLoader: self.manifestLoader,
1062-
toolsVersionLoader: self.toolsVersionLoader,
1063-
currentToolsVersion: self.currentToolsVersion
1064-
)
1065+
completion(.success(container))
1066+
}
1067+
} else {
1068+
// Resolve the container using the repository manager.
1069+
repositoryManager.lookup(repository: package.repository, skipUpdate: skipUpdate, on: queue) { result in
1070+
queue.async {
1071+
// Create the container wrapper.
1072+
let result = result.tryMap { handle -> PackageContainer in
1073+
// Open the repository.
1074+
//
1075+
// FIXME: Do we care about holding this open for the lifetime of the container.
1076+
let repository = try handle.open()
1077+
return RepositoryPackageContainer(
1078+
package: package,
1079+
identityResolver: self.identityResolver,
1080+
repository: repository,
1081+
manifestLoader: self.manifestLoader,
1082+
toolsVersionLoader: self.toolsVersionLoader,
1083+
currentToolsVersion: self.currentToolsVersion
1084+
)
1085+
}
1086+
completion(result)
10651087
}
1066-
completion(result)
10671088
}
10681089
}
1090+
1091+
10691092
}
10701093
}
10711094

0 commit comments

Comments
 (0)