package generator import ( "path/filepath" "strings" "github.com/zeromicro/go-zero/tools/goctl/util" "github.com/zeromicro/go-zero/tools/goctl/util/pathx" "github.com/zeromicro/go-zero/tools/goctl/util/stringx" ) const rpcTemplateText = `syntax = "proto3"; package {{.package}}; option go_package="./{{.package}}"; message Request { string ping = 1; } message Response { string pong = 1; } service {{.serviceName}} { rpc Ping(Request) returns(Response); } ` // ProtoTmpl returns a sample of a proto file func ProtoTmpl(out string) error { protoFilename := filepath.Base(out) serviceName := stringx.From(strings.TrimSuffix(protoFilename, filepath.Ext(protoFilename))) text, err := pathx.LoadTemplate(category, rpcTemplateFile, rpcTemplateText) if err != nil { return err } dir := filepath.Dir(out) err = pathx.MkdirIfNotExist(dir) if err != nil { return err } err = util.With("t").Parse(text).SaveTo(map[string]string{ "package": serviceName.Untitle(), "serviceName": serviceName.Title(), }, out, false) return err }