Skip to content

Commit 8dcaa85

Browse files
authored
feat: support service renaming for snippets (#1622)
* feat: support service renaming for snippets * fix service name initialization * remove log statements
1 parent b3fc5aa commit 8dcaa85

File tree

3 files changed

+45
-21
lines changed

3 files changed

+45
-21
lines changed

internal/gengapic/client_init.go

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -160,16 +160,21 @@ func (g *generator) serviceDoc(serv *descriptorpb.ServiceDescriptorProto) {
160160
return
161161
}
162162

163+
servName := serv.GetName()
164+
if override := g.getServiceNameOverride(serv); override != "" {
165+
servName = override
166+
}
167+
163168
// If the service is marked as deprecated and there is no comment, then add default deprecation comment.
164169
// If the service has a comment but it does not include a deprecation notice, then append a default deprecation notice.
165170
// If the service includes a deprecation notice at the beginning of the comment, prepend a comment stating the service is deprecated and use the included deprecation notice.
166171
if serv.GetOptions().GetDeprecated() {
167172
if com == "" {
168-
com = fmt.Sprintf("\n%s is deprecated.\n\nDeprecated: %[1]s may be removed in a future version.", serv.GetName())
173+
com = fmt.Sprintf("\n%s is deprecated.\n\nDeprecated: %[1]s may be removed in a future version.", servName)
169174
} else if strings.HasPrefix(com, "Deprecated:") {
170-
com = fmt.Sprintf("\n%s is deprecated.\n\n%s", serv.GetName(), com)
175+
com = fmt.Sprintf("\n%s is deprecated.\n\n%s", servName, com)
171176
} else if !containsDeprecated(com) {
172-
com = fmt.Sprintf("%s\n\nDeprecated: %s may be removed in a future version.", com, serv.GetName())
177+
com = fmt.Sprintf("%s\n\nDeprecated: %s may be removed in a future version.", com, servName)
173178
}
174179
}
175180
com = strings.TrimSpace(com)
@@ -240,6 +245,12 @@ func (g *generator) clientInit(serv *descriptorpb.ServiceDescriptorProto, servNa
240245
func (g *generator) genClientWrapperMethod(m *descriptorpb.MethodDescriptorProto, serv *descriptorpb.ServiceDescriptorProto, servName string) error {
241246
p := g.printf
242247

248+
// This cannot be servName since that is a shortened version and the
249+
// addSnippetsMetadataResult function expects the full service name.
250+
snippetServiceName := serv.GetName()
251+
if override := g.getServiceNameOverride(serv); override != "" {
252+
snippetServiceName = override
253+
}
243254
clientTypeName := fmt.Sprintf("%sClient", servName)
244255
inType := g.descInfo.Type[m.GetInputType()]
245256
inSpec, err := g.descInfo.ImportSpec(inType)
@@ -258,7 +269,7 @@ func (g *generator) genClientWrapperMethod(m *descriptorpb.MethodDescriptorProto
258269
p("}")
259270
p("")
260271

261-
g.addSnippetsMetadataParams(m, serv.GetName(), reqTyp)
272+
g.addSnippetsMetadataParams(m, snippetServiceName, reqTyp)
262273
return nil
263274
}
264275

@@ -277,8 +288,8 @@ func (g *generator) genClientWrapperMethod(m *descriptorpb.MethodDescriptorProto
277288
p("}")
278289
p("")
279290

280-
g.addSnippetsMetadataParams(m, serv.GetName(), reqTyp)
281-
g.addSnippetsMetadataResult(m, serv.GetName(), lroType)
291+
g.addSnippetsMetadataParams(m, snippetServiceName, reqTyp)
292+
g.addSnippetsMetadataResult(m, snippetServiceName, lroType)
282293
return nil
283294
}
284295

@@ -296,8 +307,8 @@ func (g *generator) genClientWrapperMethod(m *descriptorpb.MethodDescriptorProto
296307
p("}")
297308
p("")
298309

299-
g.addSnippetsMetadataParams(m, serv.GetName(), reqTyp)
300-
g.addSnippetsMetadataResult(m, serv.GetName(), iter.iterTypeName)
310+
g.addSnippetsMetadataParams(m, snippetServiceName, reqTyp)
311+
g.addSnippetsMetadataResult(m, snippetServiceName, iter.iterTypeName)
301312
return nil
302313
}
303314

@@ -315,8 +326,8 @@ func (g *generator) genClientWrapperMethod(m *descriptorpb.MethodDescriptorProto
315326
p("}")
316327
p("")
317328

318-
g.addSnippetsMetadataParams(m, serv.GetName(), "")
319-
g.addSnippetsMetadataResult(m, serv.GetName(), retTyp)
329+
g.addSnippetsMetadataParams(m, snippetServiceName, "")
330+
g.addSnippetsMetadataResult(m, snippetServiceName, retTyp)
320331
return nil
321332
case m.GetServerStreaming():
322333
servSpec, err := g.descInfo.ImportSpec(serv)
@@ -332,8 +343,8 @@ func (g *generator) genClientWrapperMethod(m *descriptorpb.MethodDescriptorProto
332343
p("}")
333344
p("")
334345

335-
g.addSnippetsMetadataParams(m, serv.GetName(), reqTyp)
336-
g.addSnippetsMetadataResult(m, serv.GetName(), retTyp)
346+
g.addSnippetsMetadataParams(m, snippetServiceName, reqTyp)
347+
g.addSnippetsMetadataResult(m, snippetServiceName, retTyp)
337348
return nil
338349
default:
339350
reqTyp := fmt.Sprintf("%s.%s", inSpec.Name, inType.GetName())
@@ -348,8 +359,8 @@ func (g *generator) genClientWrapperMethod(m *descriptorpb.MethodDescriptorProto
348359
p("}")
349360
p("")
350361

351-
g.addSnippetsMetadataParams(m, serv.GetName(), reqTyp)
352-
g.addSnippetsMetadataResult(m, serv.GetName(), retTyp)
362+
g.addSnippetsMetadataParams(m, snippetServiceName, reqTyp)
363+
g.addSnippetsMetadataResult(m, snippetServiceName, retTyp)
353364
return nil
354365
}
355366

internal/gengapic/gengapic.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,11 @@ func (g *generator) methodDoc(m *descriptorpb.MethodDescriptorProto, serv *descr
652652

653653
// Prepend the method name to all non-empty comments.
654654
com = m.GetName() + " " + lowerFirst(com)
655-
g.addSnippetsMetadataDoc(m, serv.GetName(), com)
655+
servName := serv.GetName()
656+
if override := g.getServiceNameOverride(serv); override != "" {
657+
servName = override
658+
}
659+
g.addSnippetsMetadataDoc(m, servName, com)
656660
g.comment(com)
657661
}
658662

internal/gengapic/snippets.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,11 @@ func (g *generator) genAndCommitSnippets(s *descriptorpb.ServiceDescriptorProto)
7373
return nil
7474
}
7575
defaultHost := proto.GetExtension(s.Options, annotations.E_DefaultHost).(string)
76-
g.snippetMetadata.AddService(s.GetName(), defaultHost)
76+
servName := s.GetName()
77+
if override := g.getServiceNameOverride(s); override != "" {
78+
servName = override
79+
}
80+
g.snippetMetadata.AddService(servName, defaultHost)
7781
methods := append(s.GetMethod(), g.getMixinMethods()...)
7882
for _, m := range methods {
7983
if m.GetClientStreaming() != m.GetServerStreaming() {
@@ -89,27 +93,32 @@ func (g *generator) genAndCommitSnippets(s *descriptorpb.ServiceDescriptorProto)
8993
g.imports[pbinfo.ImportSpec{Name: g.opts.pkgName, Path: g.opts.pkgPath}] = true
9094
// Use the client short name in this filepath.
9195
// E.g. the client for LoggingServiceV2 is just "Client".
92-
clientName := pbinfo.ReduceServName(s.GetName(), g.opts.pkgName) + "Client"
96+
clientName := pbinfo.ReduceServName(servName, g.opts.pkgName) + "Client"
9397
// Get the original proto namespace for the method (different from `s` only for mixins).
9498
f := g.descInfo.ParentFile[m]
9599
// Get the original proto service for the method (different from `s` only for mixins).
96100
methodServ := (g.descInfo.ParentElement[m]).(*descriptorpb.ServiceDescriptorProto)
97101
lineCount := g.commit(filepath.Join(g.snippetsOutDir(), clientName, m.GetName(), "main.go"), "main")
98-
g.snippetMetadata.AddMethod(s.GetName(), m.GetName(), f.GetPackage(), methodServ.GetName(), lineCount-1)
102+
g.snippetMetadata.AddMethod(servName, m.GetName(), f.GetPackage(), methodServ.GetName(), lineCount-1)
99103
}
100104
return nil
101105
}
102106

103107
// genSnippetFile generates a single RPC snippet by leveraging exampleMethodBody in gengapic/example.go.
104108
func (g *generator) genSnippetFile(s *descriptorpb.ServiceDescriptorProto, m *descriptorpb.MethodDescriptorProto) error {
105-
regionTag := g.snippetMetadata.RegionTag(s.GetName(), m.GetName())
109+
servName := s.GetName()
110+
if override := g.getServiceNameOverride(s); override != "" {
111+
servName = override
112+
}
113+
regionTag := g.snippetMetadata.RegionTag(servName, m.GetName())
106114
g.headerComment(fmt.Sprintf("[START %s]", regionTag))
107115
pkgName := g.opts.pkgName
108-
servName := pbinfo.ReduceServName(s.GetName(), pkgName)
116+
117+
reducedServName := pbinfo.ReduceServName(servName, pkgName)
109118

110119
p := g.printf
111120
p("func main() {")
112-
if err := g.exampleMethodBody(pkgName, servName, m); err != nil {
121+
if err := g.exampleMethodBody(pkgName, reducedServName, m); err != nil {
113122
return err
114123
}
115124
p("}")

0 commit comments

Comments
 (0)