in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/CodegenVisitor.kt [109:149]
fun execute() {
LOGGER.info("Generating Swift client for service ${settings.service}")
println("Walking shapes from " + service.id + " to find shapes to generate")
val serviceShapes: Set<Shape> = Walker(model).walkShapes(service)
serviceShapes.forEach { it.accept(this) }
var shouldGenerateTestTarget = false
protocolGenerator?.apply {
val ctx = ProtocolGenerator.GenerationContext(
settings,
model,
service,
symbolProvider,
integrations,
protocolGenerator.protocol,
writers
)
LOGGER.info("[${service.id}] Generating serde for protocol ${protocolGenerator.protocol}")
generateSerializers(ctx)
generateDeserializers(ctx)
generateCodableConformanceForNestedTypes(ctx)
initializeMiddleware(ctx)
LOGGER.info("[${service.id}] Generating unit tests for protocol ${protocolGenerator.protocol}")
val numProtocolUnitTestsGenerated = generateProtocolUnitTests(ctx)
shouldGenerateTestTarget = (numProtocolUnitTestsGenerated > 0)
LOGGER.info("[${service.id}] Generating service client for protocol ${protocolGenerator.protocol}")
generateProtocolClient(ctx)
}
integrations.forEach { it.writeAdditionalFiles(baseGenerationContext, writers) }
println("Flushing swift writers")
val dependencies = writers.dependencies
writers.flushWriters()
println("Generating package manifest file")
writePackageManifest(settings, fileManifest, dependencies, shouldGenerateTestTarget)
}