@@ -15,6 +15,7 @@ import Foundation
15
15
import PackageLoading
16
16
import PackageModel
17
17
import PackageGraph
18
+ import PackageRegistry
18
19
import SourceControl
19
20
20
21
/// Enumeration of the different reasons for which the resolver needs to be run.
@@ -1045,27 +1046,49 @@ extension Workspace: PackageContainerProvider {
1045
1046
}
1046
1047
}
1047
1048
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
+ )
1050
1064
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)
1065
1087
}
1066
- completion ( result)
1067
1088
}
1068
1089
}
1090
+
1091
+
1069
1092
}
1070
1093
}
1071
1094
0 commit comments