Skip to content

Commit e66dc26

Browse files
committed
Implement getEnabledTraits for SourceControlPackageContainer
* added support for source control package container to fetch enabled traits * cleanup of comments
1 parent f762650 commit e66dc26

File tree

4 files changed

+11
-16
lines changed

4 files changed

+11
-16
lines changed

Sources/PackageGraph/ModulesGraph+Loading.swift

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -260,8 +260,6 @@ extension ModulesGraph {
260260
traitConfiguration: traitConfiguration
261261
)
262262

263-
// throw PackageGraphError.duplicateProduct(product: "asdf", packages: [])
264-
265263
let rootPackages = resolvedPackages.filter { root.manifests.values.contains($0.manifest) }
266264
checkAllDependenciesAreUsed(packages: resolvedPackages, rootPackages, observabilityScope: observabilityScope)
267265

@@ -438,15 +436,9 @@ private func createResolvedPackages(
438436
var dependenciesByNameForModuleDependencyResolution = [String: ResolvedPackageBuilder]()
439437
var dependencyNamesForModuleDependencyResolutionOnly = [PackageIdentity: String]()
440438

441-
// let isRoot = package.manifest.packageKind.isRoot
442-
// let enableAllTraits = isRoot ? traitConfiguration?.enableAllTraits ?? false : false
443-
// let enabledTraits = isRoot ? traitConfiguration?.enabledTraits : nil
444-
445439
try package.manifest.dependenciesRequired(
446440
for: packageBuilder.productFilter,
447-
nil
448-
// enabledTraits
449-
// enableAllTraits: enableAllTraits
441+
nil // traits unneeded at this stage
450442
).forEach { dependency in
451443
let dependencyPackageRef = dependency.packageRef
452444

Sources/PackageGraph/PackageContainer.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public protocol PackageContainer {
102102
/// Fetch the enabled traits of a package container.
103103
///
104104
/// NOTE: This method should only be called on root packages.
105-
func getEnabledTraits(traitConfiguration: TraitConfiguration?, at version: Version?) async throws -> Set<String>
105+
func getEnabledTraits(traitConfiguration: TraitConfiguration?, version: Version?) async throws -> Set<String>
106106
}
107107

108108
extension PackageContainer {
@@ -118,7 +118,7 @@ extension PackageContainer {
118118
return true
119119
}
120120

121-
public func getEnabledTraits(traitConfiguration: TraitConfiguration?, at version: Version? = nil) async throws -> Set<String> {
121+
public func getEnabledTraits(traitConfiguration: TraitConfiguration?, version: Version? = nil) async throws -> Set<String> {
122122
return []
123123
}
124124
}

Sources/PackageGraph/Resolution/PubGrub/PubGrubDependencyResolver.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ public struct PubGrubDependencyResolver {
501501
/// decisions if nothing else is left to be done.
502502
/// After this method returns `solution` is either populated with a list of
503503
/// final version assignments or an error is thrown.
504-
private func run(state: State/*, traitConfiguration: TraitConfiguration?*/) async throws {
504+
private func run(state: State) async throws {
505505
var next: DependencyResolutionNode? = state.root
506506

507507
while let nxt = next {
@@ -512,7 +512,7 @@ public struct PubGrubDependencyResolver {
512512

513513
// If decision making determines that no more decisions are to be
514514
// made, it returns nil to signal that version solving is done.
515-
next = try await self.makeDecision(state: state/*, traitConfiguration: traitConfiguration*/)
515+
next = try await self.makeDecision(state: state)
516516
}
517517
}
518518

Sources/Workspace/PackageContainer/SourceControlPackageContainer.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -419,9 +419,12 @@ internal final class SourceControlPackageContainer: PackageContainer, CustomStri
419419
}
420420
}
421421

422-
public func getEnabledTraits(traitConfiguration: TraitConfiguration?, at version: Version?) async throws -> Set<String> {
423-
// TODO: bp complete
424-
return []
422+
public func getEnabledTraits(traitConfiguration: TraitConfiguration?, at revision: String?, version: Version?) async throws -> Set<String> {
423+
guard let version, let tag = getTag(for: version) else {
424+
return []
425+
}
426+
let manifest = try await self.loadManifest(tag: tag, version: version)
427+
return try manifest.enabledTraits(using: traitConfiguration?.enabledTraits, enableAllTraits: traitConfiguration?.enableAllTraits ?? false) ?? []
425428
}
426429

427430
public var isRemoteContainer: Bool? {

0 commit comments

Comments
 (0)