Skip to content

Commit c830db3

Browse files
committed
conditionally add model codegen plugin to services
1 parent 5a075be commit c830db3

2 files changed

Lines changed: 47 additions & 34 deletions

File tree

tools/code-generation/smithy/cpp-codegen/build.gradle.kts

Lines changed: 45 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ tasks.register("generate-smithy-build") {
4444
val filteredServiceList = filteredServices.split(",").map { it.trim() }.filter { it.isNotEmpty() }
4545
val c2jMapStr: String = project.findProperty("c2jMap")?.toString() ?: "{}"
4646
val namespaceMappings: String = project.findProperty("namespaceMappings")?.toString() ?: "{}"
47+
val generateModels: Boolean = project.findProperty("generateModels")?.toString()?.toBoolean() ?: false
4748

4849
fileTree(models).filter { it.isFile }.files.forEach eachFile@{ file ->
4950
val model = Model.assembler()
@@ -58,21 +59,25 @@ tasks.register("generate-smithy-build") {
5859

5960
if (filteredServiceList.isNotEmpty() && sdkId !in filteredServiceList) return@eachFile
6061

62+
var pluginsNode = Node.objectNode()
63+
.withMember("smithy-cpp-codegen-paginators", Node.objectNodeBuilder()
64+
.withMember("c2jMap", Node.from(c2jMapStr))
65+
.withMember("namespaceMappings", Node.from(namespaceMappings))
66+
.build())
67+
.withMember("smithy-cpp-codegen-waiters", Node.objectNodeBuilder()
68+
.withMember("c2jMap", Node.from(c2jMapStr))
69+
.withMember("namespaceMappings", Node.from(namespaceMappings))
70+
.build())
71+
if (generateModels) {
72+
pluginsNode = pluginsNode.withMember("smithy-cpp-codegen-models", Node.objectNodeBuilder()
73+
.withMember("c2jMap", Node.from(c2jMapStr))
74+
.withMember("namespaceMappings", Node.from(namespaceMappings))
75+
.build())
76+
}
77+
6178
val projectionContents = Node.objectNodeBuilder()
6279
.withMember("imports", Node.fromStrings("${models.absolutePath}${File.separator}${file.name}"))
63-
.withMember("plugins", Node.objectNode()
64-
.withMember("smithy-cpp-codegen-paginators", Node.objectNodeBuilder()
65-
.withMember("c2jMap", Node.from(c2jMapStr))
66-
.withMember("namespaceMappings", Node.from(namespaceMappings))
67-
.build())
68-
.withMember("smithy-cpp-codegen-waiters", Node.objectNodeBuilder()
69-
.withMember("c2jMap", Node.from(c2jMapStr))
70-
.withMember("namespaceMappings", Node.from(namespaceMappings))
71-
.build())
72-
.withMember("smithy-cpp-codegen-models", Node.objectNodeBuilder()
73-
.withMember("c2jMap", Node.from(c2jMapStr))
74-
.withMember("namespaceMappings", Node.from(namespaceMappings))
75-
.build()))
80+
.withMember("plugins", pluginsNode)
7681
.build()
7782

7883
projectionsBuilder.withMember("$sdkId.${service.version.lowercase()}", projectionContents)
@@ -82,20 +87,23 @@ tasks.register("generate-smithy-build") {
8287
val legacyServices = mapOf("importexport" to "ImportExport", "sdb" to "SimpleDB")
8388
legacyServices.forEach { (c2jName, serviceName) ->
8489
if (filteredServiceList.isEmpty() || c2jName in filteredServiceList) {
85-
val mockProjectionContents = Node.objectNodeBuilder()
86-
.withMember("plugins", Node.objectNode()
87-
.withMember("smithy-cpp-codegen-paginators", Node.objectNodeBuilder()
88-
.withMember("c2jMap", Node.from(c2jMapStr))
89-
.withMember("namespaceMappings", Node.from(namespaceMappings))
90-
.build())
90+
var legacyPluginsNode = Node.objectNode()
91+
.withMember("smithy-cpp-codegen-paginators", Node.objectNodeBuilder()
92+
.withMember("c2jMap", Node.from(c2jMapStr))
93+
.withMember("namespaceMappings", Node.from(namespaceMappings))
94+
.build())
9195
.withMember("smithy-cpp-codegen-waiters", Node.objectNodeBuilder()
9296
.withMember("c2jMap", Node.from(c2jMapStr))
9397
.withMember("namespaceMappings", Node.from(namespaceMappings))
9498
.build())
95-
.withMember("smithy-cpp-codegen-models", Node.objectNodeBuilder()
99+
if (generateModels) {
100+
legacyPluginsNode = legacyPluginsNode.withMember("smithy-cpp-codegen-models", Node.objectNodeBuilder()
96101
.withMember("c2jMap", Node.from(c2jMapStr))
97102
.withMember("namespaceMappings", Node.from(namespaceMappings))
98-
.build()))
103+
.build())
104+
}
105+
val mockProjectionContents = Node.objectNodeBuilder()
106+
.withMember("plugins", legacyPluginsNode)
99107
.build()
100108
projectionsBuilder.withMember("$c2jName.mock", mockProjectionContents)
101109
}
@@ -104,21 +112,24 @@ tasks.register("generate-smithy-build") {
104112
// S3-CRT: Uses S3 model but generates with S3Crt namespace
105113
if (filteredServiceList.isEmpty() || "s3-crt" in filteredServiceList) {
106114
fileTree(models).filter { it.isFile && it.name == "s3.json" }.files.firstOrNull()?.let { s3ModelFile ->
115+
var s3CrtPluginsNode = Node.objectNode()
116+
.withMember("smithy-cpp-codegen-paginators", Node.objectNodeBuilder()
117+
.withMember("c2jMap", Node.from(c2jMapStr))
118+
.withMember("namespaceMappings", Node.from(namespaceMappings))
119+
.build())
120+
.withMember("smithy-cpp-codegen-waiters", Node.objectNodeBuilder()
121+
.withMember("c2jMap", Node.from(c2jMapStr))
122+
.withMember("namespaceMappings", Node.from(namespaceMappings))
123+
.build())
124+
if (generateModels) {
125+
s3CrtPluginsNode = s3CrtPluginsNode.withMember("smithy-cpp-codegen-models", Node.objectNodeBuilder()
126+
.withMember("c2jMap", Node.from(c2jMapStr))
127+
.withMember("namespaceMappings", Node.from(namespaceMappings))
128+
.build())
129+
}
107130
val s3CrtProjectionContents = Node.objectNodeBuilder()
108131
.withMember("imports", Node.fromStrings(s3ModelFile.absolutePath))
109-
.withMember("plugins", Node.objectNode()
110-
.withMember("smithy-cpp-codegen-paginators", Node.objectNodeBuilder()
111-
.withMember("c2jMap", Node.from(c2jMapStr))
112-
.withMember("namespaceMappings", Node.from(namespaceMappings))
113-
.build())
114-
.withMember("smithy-cpp-codegen-waiters", Node.objectNodeBuilder()
115-
.withMember("c2jMap", Node.from(c2jMapStr))
116-
.withMember("namespaceMappings", Node.from(namespaceMappings))
117-
.build())
118-
.withMember("smithy-cpp-codegen-models", Node.objectNodeBuilder()
119-
.withMember("c2jMap", Node.from(c2jMapStr))
120-
.withMember("namespaceMappings", Node.from(namespaceMappings))
121-
.build()))
132+
.withMember("plugins", s3CrtPluginsNode)
122133
.build()
123134
projectionsBuilder.withMember("s3-crt.2006-03-01", s3CrtProjectionContents)
124135
}

tools/scripts/codegen/smithy_cpp_gen.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ def _generate_pagination(self, smithy_services: List[str], smithy_c2j_data: str)
6060
"-Pc2jMap=" + smithy_c2j_data,
6161
"-PnamespaceMappings=" + json.dumps(self.smithy_namespace_mappings)
6262
]
63+
if self.use_smithy_models:
64+
smithy_codegen_command.append("-PgenerateModels=true")
6365

6466
try:
6567
if self.debug:

0 commit comments

Comments
 (0)