fun awsServiceProjections()

in codegen/sdk/build.gradle.kts [108:142]


fun awsServiceProjections(): Provider<List<SmithyProjection>> {
    val p = project.provider {
        println("AWS service projection provider called")
        discoveredServices
    }.map {
        it.map { service ->
            SmithyProjection(
                service.projectionName,
                project.projectionRootDir(service.projectionName)
            ).apply {
                val importPaths = mutableListOf(service.modelFile.absolutePath)
                if (file(service.modelExtrasDir).exists()) {
                    importPaths.add(service.modelExtrasDir)
                }
                imports = importPaths
                transforms = transformsForService(service) ?: emptyList()

                smithyKotlinPlugin {
                    serviceShapeId = service.name
                    packageName = service.packageName
                    packageVersion = service.packageVersion
                    packageDescription = service.description
                    sdkId = service.sdkId
                    buildSettings {
                        generateFullProject = false
                        generateDefaultBuildFiles = false
                    }
                }
            }
        }
    }

    // get around class cast issues, listProperty implements what we need to pass this to `NamedObjectContainer`
    return project.objects.listProperty<SmithyProjection>().value(p)
}