fun execute()

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)
    }