@@ -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.
@@ -1047,27 +1048,49 @@ extension Workspace: PackageContainerProvider {
1047
1048
}
1048
1049
}
1049
1050
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
+ )
1052
1066
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)
1067
1089
}
1068
- completion ( result)
1069
1090
}
1070
1091
}
1092
+
1093
+
1071
1094
}
1072
1095
}
1073
1096
0 commit comments