in Generator/Sources/NeedleFramework/Generating/DependencyGraphExporter.swift [46:64]
func export(_ components: [Component], with imports: [String], to path: String, using executor: SequenceExecutor, withTimeout timeout: TimeInterval, include headerDocPath: String?) throws {
// Enqueue tasks.
let taskHandleTuples = enqueueExportDependencyProviders(for: components, using: executor)
let dynamicTtaskHandleTuples = enqueueExportDynamicDependencyProviders(for: components, using: executor)
let headerDocContentHandle = try enqueueLoadHeaderDoc(from: headerDocPath, using: executor)
// Wait for execution to complete.
let providers = try awaitSerialization(using: taskHandleTuples, withTimeout: timeout)
let dynamicProviders = try awaitSerialization(using: dynamicTtaskHandleTuples, withTimeout: timeout)
let headerDocContent = try headerDocContentHandle?.await(withTimeout: timeout) ?? ""
let fileContents = OutputSerializer(providers: providers, dynamicProviders: dynamicProviders, imports: imports, headerDocContent: headerDocContent).serialize()
let currentFileContents = try? String(contentsOfFile: path, encoding: .utf8)
guard currentFileContents != fileContents else {
info("Not writing the file as content is unchanged")
return
}
try fileContents.write(toFile: path, atomically: true, encoding: .utf8)
}