Commit 83cfd8a
committed
Add gRPC support to mains plugin
This change enhances the mains plugin to support gRPC servers in addition to HTTP servers, addressing issue #209.
Key changes:
- Only generate HTTP server code when the service design includes HTTP endpoints
- Only generate gRPC server code when the service design includes gRPC endpoints
- Always generate the metrics HTTP server (health/metrics/debug endpoints)
- Fix duplicate package/import declarations in generated main.go
- Fix WebSocket detection bug (Stream value of 0 means no streaming, not NoStreamKind)
- Conditionally import transport-specific packages based on what's actually used
- Add proper OTel instrumentation for gRPC servers
- Implement graceful shutdown for both HTTP and gRPC servers
The plugin now:
1. Scans the DSL for HTTP and gRPC endpoint definitions
2. Conditionally generates server initialization code based on transports used
3. Manages imports efficiently (only includes websocket, grpc packages when needed)
4. Provides a unified main.go that can run HTTP-only, gRPC-only, or both transports
5. Maintains the existing single-service (services/<svc>/cmd/<svc>) and multi-service (cmd/<server>) layouts
Fixes #2091 parent 11a756c commit 83cfd8a
2 files changed
Lines changed: 158 additions & 40 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
| 35 | + | |
34 | 36 | | |
35 | 37 | | |
36 | 38 | | |
| |||
43 | 45 | | |
44 | 46 | | |
45 | 47 | | |
| 48 | + | |
| 49 | + | |
46 | 50 | | |
| 51 | + | |
| 52 | + | |
47 | 53 | | |
48 | 54 | | |
49 | 55 | | |
| |||
109 | 115 | | |
110 | 116 | | |
111 | 117 | | |
| 118 | + | |
112 | 119 | | |
113 | 120 | | |
114 | | - | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
115 | 132 | | |
116 | 133 | | |
117 | 134 | | |
118 | 135 | | |
119 | 136 | | |
120 | 137 | | |
121 | 138 | | |
122 | | - | |
| 139 | + | |
123 | 140 | | |
124 | 141 | | |
125 | 142 | | |
126 | | - | |
| 143 | + | |
127 | 144 | | |
128 | 145 | | |
129 | 146 | | |
| |||
156 | 173 | | |
157 | 174 | | |
158 | 175 | | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
159 | 184 | | |
160 | 185 | | |
161 | 186 | | |
| |||
164 | 189 | | |
165 | 190 | | |
166 | 191 | | |
| 192 | + | |
| 193 | + | |
167 | 194 | | |
168 | 195 | | |
| 196 | + | |
| 197 | + | |
169 | 198 | | |
170 | 199 | | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
| 200 | + | |
| 201 | + | |
176 | 202 | | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
177 | 227 | | |
178 | 228 | | |
179 | 229 | | |
| 230 | + | |
180 | 231 | | |
181 | 232 | | |
182 | 233 | | |
| |||
185 | 236 | | |
186 | 237 | | |
187 | 238 | | |
| 239 | + | |
| 240 | + | |
188 | 241 | | |
| 242 | + | |
| 243 | + | |
189 | 244 | | |
190 | 245 | | |
191 | 246 | | |
| |||
195 | 250 | | |
196 | 251 | | |
197 | 252 | | |
| 253 | + | |
| 254 | + | |
198 | 255 | | |
199 | 256 | | |
200 | 257 | | |
| |||
265 | 322 | | |
266 | 323 | | |
267 | 324 | | |
268 | | - | |
| 325 | + | |
| 326 | + | |
269 | 327 | | |
270 | 328 | | |
271 | 329 | | |
| |||
286 | 344 | | |
287 | 345 | | |
288 | 346 | | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | 1 | | |
31 | 2 | | |
| 3 | + | |
32 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
33 | 9 | | |
34 | 10 | | |
35 | 11 | | |
| |||
126 | 102 | | |
127 | 103 | | |
128 | 104 | | |
| 105 | + | |
129 | 106 | | |
130 | 107 | | |
131 | 108 | | |
| |||
139 | 116 | | |
140 | 117 | | |
141 | 118 | | |
| 119 | + | |
142 | 120 | | |
143 | 121 | | |
144 | 122 | | |
| |||
150 | 128 | | |
151 | 129 | | |
152 | 130 | | |
| 131 | + | |
153 | 132 | | |
154 | 133 | | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
155 | 157 | | |
156 | | - | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
157 | 162 | | |
158 | 163 | | |
159 | 164 | | |
| |||
167 | 172 | | |
168 | 173 | | |
169 | 174 | | |
| 175 | + | |
170 | 176 | | |
171 | 177 | | |
172 | 178 | | |
173 | 179 | | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
174 | 193 | | |
175 | 194 | | |
176 | 195 | | |
177 | 196 | | |
178 | 197 | | |
179 | 198 | | |
180 | 199 | | |
181 | | - | |
| 200 | + | |
182 | 201 | | |
183 | 202 | | |
184 | 203 | | |
| |||
192 | 211 | | |
193 | 212 | | |
194 | 213 | | |
| 214 | + | |
195 | 215 | | |
196 | 216 | | |
197 | 217 | | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
198 | 224 | | |
199 | 225 | | |
200 | 226 | | |
| |||
0 commit comments