in Generator/Sources/NeedleFramework/Generating/Pluginized/PluginizedDependencyGraphExporter.swift [48:68]
func export(_ components: [Component], _ pluginizedComponents: [PluginizedComponent], with imports: [String], to path: String, using executor: SequenceExecutor, withTimeout timeout: TimeInterval, include headerDocPath: String?, needleVersionHash: String?) throws {
// Enqueue tasks.
let dependencyProviderHandleTuples = enqueueExportDependencyProviders(for: components, pluginizedComponents, using: executor)
let dynamicDependencyProviderHandleTuples = enqueueExportDynamicDependencyProviders(for: components, pluginizedComponents, using: executor)
let pluginExtensionHandleTuples = enqueueExportPluginExtensions(for: pluginizedComponents, using: executor)
let dynamicpluginExtensionHandleTuples = enqueueExportDynamicPluginExtensions(for: pluginizedComponents, using: executor)
let headerDocContentHandle = enqueueLoadHeaderDoc(from: headerDocPath, using: executor)
// Wait for execution to complete.
let serializedProviders = try awaitSerialization(using: dependencyProviderHandleTuples + pluginExtensionHandleTuples, withTimeout: timeout)
let serializedDynamicProviders = try awaitSerialization(using: dynamicDependencyProviderHandleTuples + dynamicpluginExtensionHandleTuples, withTimeout: timeout)
let headerDocContent = try headerDocContentHandle?.await(withTimeout: timeout) ?? ""
let fileContents = OutputSerializer(providers: serializedProviders, dynamicProviders: serializedDynamicProviders, imports: imports, headerDocContent: headerDocContent, needleVersionHash: needleVersionHash).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)
}