this repo has no description
www.jonmsterling.com/01HC/
1// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers
2//
3// SPDX-License-Identifier: MPL-2.0
4
5import Foundation
6import TSCBasic
7import llbuild2fx
8
9extension Graph: FXValue where Vertex: Codable {}
10
11extension Keys {
12 struct DependencyGraphOfSourceTree: BuildKey {
13 typealias ValueType = Graph<UnitName>
14
15 let sourceTreeId: LLBDataID
16 static let versionDependencies: [any FXVersioning.Type] = [Keys.UnitMapOfSourceTree.self, Keys.AnalyseImports.self]
17
18 func computeValue(_ ctx: BuildContext<Self>) async throws -> Graph<UnitName> {
19 let unitMap = try await ctx.request(Keys.UnitMapOfSourceTree(sourceTreeId: sourceTreeId))
20 var edges: [UnitName: Set<UnitName>] = [:]
21
22 for (unitName, unitInfo) in unitMap.units {
23 if edges[unitName] == nil { edges[unitName] = [] }
24 let imports = try await ctx.request(Keys.AnalyseImports(blobId: unitInfo.blobId))
25 for importedUnitName in imports {
26 edges[unitName]!.insert(importedUnitName)
27 }
28 }
29
30 return Graph(edges: edges)
31 }
32 }
33}