Skip to content

Commit dfc41f2

Browse files
committed
Add code gen config for the module name
Modifications: - Add config to the code generator allowing a different module name to be specified. - Remove unused code Result: The grpc module name can be specified in generated code
1 parent d412128 commit dfc41f2

File tree

6 files changed

+54
-114
lines changed

6 files changed

+54
-114
lines changed

Sources/GRPCCodeGen/CodeGenerator.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public struct CodeGenerator: Sendable {
4040
public var client: Bool
4141
/// Whether or not server code should be generated.
4242
public var server: Bool
43+
/// The name of the core gRPC module.
44+
public var grpcCoreModuleName: String
4345

4446
/// Creates a new configuration.
4547
///
@@ -61,6 +63,7 @@ public struct CodeGenerator: Sendable {
6163
self.indentation = indentation
6264
self.client = client
6365
self.server = server
66+
self.grpcCoreModuleName = "GRPCCore"
6467
}
6568

6669
/// The possible access levels for the generated code.
@@ -96,7 +99,8 @@ public struct CodeGenerator: Sendable {
9699
accessLevel: self.config.accessLevel,
97100
accessLevelOnImports: self.config.accessLevelOnImports,
98101
client: self.config.client,
99-
server: self.config.server
102+
server: self.config.server,
103+
grpcCoreModuleName: self.config.grpcCoreModuleName
100104
)
101105

102106
let sourceFile = try textRenderer.render(structured: structuredSwiftRepresentation)

Sources/GRPCCodeGen/Internal/Translator/IDLToStructuredSwiftTranslator.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,16 @@
1717
/// Creates a representation for the server and client code, as well as for the enums containing useful type aliases and properties.
1818
/// The representation is generated based on the ``CodeGenerationRequest`` object and user specifications,
1919
/// using types from ``StructuredSwiftRepresentation``.
20-
package struct IDLToStructuredSwiftTranslator: Translator {
20+
package struct IDLToStructuredSwiftTranslator {
2121
package init() {}
2222

2323
func translate(
2424
codeGenerationRequest: CodeGenerationRequest,
2525
accessLevel: CodeGenerator.Config.AccessLevel,
2626
accessLevelOnImports: Bool,
2727
client: Bool,
28-
server: Bool
28+
server: Bool,
29+
grpcCoreModuleName: String
2930
) throws -> StructuredSwiftRepresentation {
3031
try self.validateInput(codeGenerationRequest)
3132
let accessModifier = AccessModifier(accessLevel)
@@ -84,7 +85,8 @@ package struct IDLToStructuredSwiftTranslator: Translator {
8485
imports = try self.makeImports(
8586
dependencies: codeGenerationRequest.dependencies,
8687
accessLevel: accessLevel,
87-
accessLevelOnImports: accessLevelOnImports
88+
accessLevelOnImports: accessLevelOnImports,
89+
grpcCoreModuleName: grpcCoreModuleName
8890
)
8991
}
9092

@@ -102,13 +104,14 @@ package struct IDLToStructuredSwiftTranslator: Translator {
102104
package func makeImports(
103105
dependencies: [Dependency],
104106
accessLevel: CodeGenerator.Config.AccessLevel,
105-
accessLevelOnImports: Bool
107+
accessLevelOnImports: Bool,
108+
grpcCoreModuleName: String
106109
) throws -> [ImportDescription] {
107110
var imports: [ImportDescription] = []
108111
imports.append(
109112
ImportDescription(
110113
accessLevel: accessLevelOnImports ? AccessModifier(accessLevel) : nil,
111-
moduleName: "GRPCCore"
114+
moduleName: grpcCoreModuleName
112115
)
113116
)
114117

Sources/GRPCCodeGen/Internal/Translator/SpecializedTranslator.swift

Lines changed: 0 additions & 59 deletions
This file was deleted.

Sources/GRPCCodeGen/Internal/Translator/Translator.swift

Lines changed: 0 additions & 37 deletions
This file was deleted.

Tests/GRPCCodeGenTests/Internal/StructuredSwift+ImportTests.swift

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ extension StructuredSwiftTests {
107107
let imports = try StructuredSwiftTests.Import.translator.makeImports(
108108
dependencies: dependencies,
109109
accessLevel: accessLevel,
110-
accessLevelOnImports: true
110+
accessLevelOnImports: true,
111+
grpcCoreModuleName: "GRPCCore"
111112
)
112113

113114
#expect(render(imports) == expected)
@@ -157,7 +158,8 @@ extension StructuredSwiftTests {
157158
let imports = try StructuredSwiftTests.Import.translator.makeImports(
158159
dependencies: dependencies,
159160
accessLevel: accessLevel,
160-
accessLevelOnImports: true
161+
accessLevelOnImports: true,
162+
grpcCoreModuleName: "GRPCCore"
161163
)
162164

163165
#expect(render(imports) == expected)
@@ -191,11 +193,29 @@ extension StructuredSwiftTests {
191193
let imports = try StructuredSwiftTests.Import.translator.makeImports(
192194
dependencies: dependencies,
193195
accessLevel: accessLevel,
194-
accessLevelOnImports: true
196+
accessLevelOnImports: true,
197+
grpcCoreModuleName: "GRPCCore"
195198
)
196199

197200
#expect(render(imports) == expected)
198201
}
199202

203+
@Test("gRPC module name")
204+
func grpcModuleName() throws {
205+
let translator = IDLToStructuredSwiftTranslator()
206+
let imports = try translator.makeImports(
207+
dependencies: [],
208+
accessLevel: .public,
209+
accessLevelOnImports: true,
210+
grpcCoreModuleName: "GRPCCoreFoo"
211+
)
212+
213+
let expected =
214+
"""
215+
public import GRPCCoreFoo
216+
"""
217+
218+
#expect(render(imports) == expected)
219+
}
200220
}
201221
}

Tests/GRPCCodeGenTests/Internal/Translator/IDLToStructuredSwiftTranslatorSnippetBasedTests.swift

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
169169
accessLevel: accessLevel,
170170
accessLevelOnImports: true,
171171
client: false,
172-
server: server
172+
server: server,
173+
grpcCoreModuleName: "GRPCCore"
173174
)
174175
let renderer = TextBasedRenderer.default
175176
let sourceFile = try renderer.render(structured: structuredSwift)
@@ -197,7 +198,8 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
197198
accessLevel: .public,
198199
accessLevelOnImports: true,
199200
client: true,
200-
server: true
201+
server: true,
202+
grpcCoreModuleName: "GRPCCore"
201203
)
202204
) {
203205
error in
@@ -244,7 +246,8 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
244246
accessLevel: .public,
245247
accessLevelOnImports: true,
246248
client: true,
247-
server: true
249+
server: true,
250+
grpcCoreModuleName: "GRPCCore"
248251
)
249252
) {
250253
error in
@@ -279,7 +282,8 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
279282
accessLevel: .public,
280283
accessLevelOnImports: true,
281284
client: true,
282-
server: true
285+
server: true,
286+
grpcCoreModuleName: "GRPCCore"
283287
)
284288
) {
285289
error in
@@ -325,7 +329,8 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
325329
accessLevel: .internal,
326330
accessLevelOnImports: true,
327331
client: true,
328-
server: true
332+
server: true,
333+
grpcCoreModuleName: "GRPCCore"
329334
)
330335
) { error in
331336
XCTAssertEqual(
@@ -369,7 +374,8 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
369374
accessLevel: .public,
370375
accessLevelOnImports: true,
371376
client: true,
372-
server: true
377+
server: true,
378+
grpcCoreModuleName: "GRPCCore"
373379
)
374380
) { error in
375381
XCTAssertEqual(
@@ -429,7 +435,8 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
429435
accessLevel: .public,
430436
accessLevelOnImports: true,
431437
client: true,
432-
server: true
438+
server: true,
439+
grpcCoreModuleName: "GRPCCore"
433440
)
434441
) { error in
435442
XCTAssertEqual(
@@ -482,7 +489,8 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
482489
accessLevel: .public,
483490
accessLevelOnImports: true,
484491
client: true,
485-
server: true
492+
server: true,
493+
grpcCoreModuleName: "GRPCCore"
486494
)
487495
) {
488496
error in
@@ -528,7 +536,8 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
528536
accessLevel: .public,
529537
accessLevelOnImports: true,
530538
client: true,
531-
server: true
539+
server: true,
540+
grpcCoreModuleName: "GRPCCore"
532541
)
533542
) {
534543
error in

0 commit comments

Comments
 (0)