| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package gen
- import (
- "path/filepath"
- "strings"
- "github.com/logrusorgru/aurora"
- "github.com/tal-tech/go-zero/tools/goctl/util"
- "github.com/tal-tech/go-zero/tools/goctl/util/console"
- "github.com/tal-tech/go-zero/tools/goctl/util/stringx"
- )
- const rpcTemplateText = `syntax = "proto3";
- package {{.package}};
- message Request {
- string ping = 1;
- }
- message Response {
- string pong = 1;
- }
- service {{.serviceName}} {
- rpc Ping(Request) returns(Response);
- }
- `
- type rpcTemplate struct {
- out string
- console.Console
- }
- func NewRpcTemplate(out string, idea bool) *rpcTemplate {
- return &rpcTemplate{
- out: out,
- Console: console.NewConsole(idea),
- }
- }
- func (r *rpcTemplate) MustGenerate(showState bool) {
- r.Info(aurora.Blue("-> goctl rpc reference documents: ").String() + "「https://github.com/tal-tech/zero-doc/blob/main/doc/goctl-rpc.md」")
- r.Info("-> generating template...")
- protoFilename := filepath.Base(r.out)
- serviceName := stringx.From(strings.TrimSuffix(protoFilename, filepath.Ext(protoFilename)))
- text, err := util.LoadTemplate(category, rpcTemplateFile, rpcTemplateText)
- r.Must(err)
- err = util.With("t").Parse(text).SaveTo(map[string]string{
- "package": serviceName.UnTitle(),
- "serviceName": serviceName.Title(),
- }, r.out, false)
- r.Must(err)
- if showState {
- r.Success("Done.")
- }
- }
|