14
14
* limitations under the License.
15
15
*/
16
16
17
+ import GRPCCodeGen
18
+ import GRPCProtobufCodeGen
17
19
import SwiftProtobufPluginLibrary
18
20
19
21
enum GenerationError : Error , CustomStringConvertible {
@@ -43,35 +45,13 @@ enum FileNaming: String {
43
45
}
44
46
45
47
struct GeneratorOptions {
46
- enum Visibility : String {
47
- case `internal` = " Internal "
48
- case `public` = " Public "
49
- case `package` = " Package "
50
-
51
- var sourceSnippet : String {
52
- switch self {
53
- case . internal:
54
- return " internal "
55
- case . public:
56
- return " public "
57
- case . package :
58
- return " package "
59
- }
60
- }
61
- }
62
-
63
- private( set) var visibility = Visibility . internal
64
-
65
- private( set) var generateServer = true
66
- private( set) var generateClient = true
67
-
68
48
private( set) var protoToModuleMappings = ProtoFileToModuleMappings ( )
69
49
private( set) var fileNaming = FileNaming . fullPath
70
50
private( set) var extraModuleImports : [ String ] = [ ]
71
- private( set) var gRPCModuleName = " GRPC "
72
- private( set) var swiftProtobufModuleName = " SwiftProtobuf "
51
+
73
52
private( set) var generateReflectionData = false
74
- private( set) var useAccessLevelOnImports = false
53
+
54
+ private( set) var config : ProtobufCodeGenerator . Config = . defaults
75
55
76
56
init ( parameter: any CodeGeneratorParameter ) throws {
77
57
try self . init ( pairs: parameter. parsedPairs)
@@ -81,22 +61,22 @@ struct GeneratorOptions {
81
61
for pair in pairs {
82
62
switch pair. key {
83
63
case " Visibility " :
84
- if let value = Visibility ( rawValue : pair. value) {
85
- self . visibility = value
64
+ if let value = GRPCCodeGen . CodeGenerator . Config . AccessLevel ( protocOption : pair. value) {
65
+ self . config . accessLevel = value
86
66
} else {
87
67
throw GenerationError . invalidParameterValue ( name: pair. key, value: pair. value)
88
68
}
89
69
90
70
case " Server " :
91
71
if let value = Bool ( pair. value. lowercased ( ) ) {
92
- self . generateServer = value
72
+ self . config . generateServer = value
93
73
} else {
94
74
throw GenerationError . invalidParameterValue ( name: pair. key, value: pair. value)
95
75
}
96
76
97
77
case " Client " :
98
78
if let value = Bool ( pair. value. lowercased ( ) ) {
99
- self . generateClient = value
79
+ self . config . generateClient = value
100
80
} else {
101
81
throw GenerationError . invalidParameterValue ( name: pair. key, value: pair. value)
102
82
}
@@ -129,14 +109,21 @@ struct GeneratorOptions {
129
109
130
110
case " GRPCModuleName " :
131
111
if !pair. value. isEmpty {
132
- self . gRPCModuleName = pair. value
112
+ self . config. moduleNames. grpcCore = pair. value
113
+ } else {
114
+ throw GenerationError . invalidParameterValue ( name: pair. key, value: pair. value)
115
+ }
116
+
117
+ case " GRPCProtobufModuleName " :
118
+ if !pair. value. isEmpty {
119
+ self . config. moduleNames. grpcProtobuf = pair. value
133
120
} else {
134
121
throw GenerationError . invalidParameterValue ( name: pair. key, value: pair. value)
135
122
}
136
123
137
124
case " SwiftProtobufModuleName " :
138
125
if !pair. value. isEmpty {
139
- self . swiftProtobufModuleName = pair. value
126
+ self . config . moduleNames . swiftProtobuf = pair. value
140
127
} else {
141
128
throw GenerationError . invalidParameterValue ( name: pair. key, value: pair. value)
142
129
}
@@ -150,7 +137,7 @@ struct GeneratorOptions {
150
137
151
138
case " UseAccessLevelOnImports " :
152
139
if let value = Bool ( pair. value. lowercased ( ) ) {
153
- self . useAccessLevelOnImports = value
140
+ self . config . accessLevelOnImports = value
154
141
} else {
155
142
throw GenerationError . invalidParameterValue ( name: pair. key, value: pair. value)
156
143
}
@@ -194,3 +181,18 @@ extension String.SubSequence {
194
181
return String ( trimmed)
195
182
}
196
183
}
184
+
185
+ extension GRPCCodeGen . CodeGenerator . Config . AccessLevel {
186
+ fileprivate init ? ( protocOption value: String ) {
187
+ switch value {
188
+ case " Internal " :
189
+ self = . internal
190
+ case " Public " :
191
+ self = . public
192
+ case " Package " :
193
+ self = . package
194
+ default :
195
+ return nil
196
+ }
197
+ }
198
+ }
0 commit comments