Skip to content

Commit 4ccbc4a

Browse files
committed
WIP RegistryPackageContainer integration
1 parent 45ea41f commit 4ccbc4a

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.
@@ -1047,27 +1048,49 @@ extension Workspace: PackageContainerProvider {
10471048
}
10481049
}
10491050

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

0 commit comments

Comments
 (0)