Skip to content

Commit 1d71bc0

Browse files
committed
Retrieve resolved package versions in parallel
1 parent 0401a2a commit 1d71bc0

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

Sources/Workspace/Workspace+Dependencies.swift

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -419,26 +419,31 @@ extension Workspace {
419419
}
420420

421421
// Retrieve the required resolved packages.
422-
for resolvedPackage in requiredResolvedPackages {
423-
await observabilityScope.makeChildScope(
424-
description: "retrieving resolved package versions for dependencies",
425-
metadata: resolvedPackage.packageRef.diagnosticsMetadata
426-
).trap {
427-
switch resolvedPackage.packageRef.kind {
428-
case .localSourceControl, .remoteSourceControl:
429-
_ = try await self.checkoutRepository(
430-
package: resolvedPackage.packageRef,
431-
at: resolvedPackage.state,
432-
observabilityScope: observabilityScope
433-
)
434-
case .registry:
435-
_ = try await self.downloadRegistryArchive(
436-
package: resolvedPackage.packageRef,
437-
at: resolvedPackage.state,
438-
observabilityScope: observabilityScope
439-
)
440-
default:
441-
throw InternalError("invalid resolved package type \(resolvedPackage.packageRef.kind)")
422+
await withThrowingTaskGroup(of: Void.self) { taskGroup in
423+
for resolvedPackage in requiredResolvedPackages {
424+
let observabilityScope = observabilityScope.makeChildScope(
425+
description: "retrieving resolved package versions for dependencies",
426+
metadata: resolvedPackage.packageRef.diagnosticsMetadata
427+
)
428+
taskGroup.addTask {
429+
await observabilityScope.trap {
430+
switch resolvedPackage.packageRef.kind {
431+
case .localSourceControl, .remoteSourceControl:
432+
_ = try await self.checkoutRepository(
433+
package: resolvedPackage.packageRef,
434+
at: resolvedPackage.state,
435+
observabilityScope: observabilityScope
436+
)
437+
case .registry:
438+
_ = try await self.downloadRegistryArchive(
439+
package: resolvedPackage.packageRef,
440+
at: resolvedPackage.state,
441+
observabilityScope: observabilityScope
442+
)
443+
default:
444+
throw InternalError("invalid resolved package type \(resolvedPackage.packageRef.kind)")
445+
}
446+
}
442447
}
443448
}
444449
}

0 commit comments

Comments
 (0)