github.com/yoogoc/kratos-scaffold@v0.0.0-20240402032722-a538b3c18955/cmd/proto.go (about) 1 package cmd 2 3 import ( 4 "github.com/iancoleman/strcase" 5 "github.com/spf13/cobra" 6 "github.com/yoogoc/kratos-scaffold/generator" 7 "github.com/yoogoc/kratos-scaffold/pkg/field" 8 "github.com/yoogoc/kratos-scaffold/pkg/util" 9 ) 10 11 func newProtoCmd() *cobra.Command { 12 proto := generator.NewProto(settings) 13 var protoCmd = &cobra.Command{ 14 Use: "proto [NAME]", 15 Short: "proto generate req and res model, crud service and xx.pb.go,xx_grpc.pb.go,[xx_http.pb.go].", 16 Long: `proto generate req and res model, crud service and xx.pb.go,xx_grpc.pb.go,[xx_http.pb.go]. 17 kratos-scaffold user -n user id:int64:eq,in name:string:contains age:int32:gte,lte --grpc --http`, 18 FParseErrWhitelist: cobra.FParseErrWhitelist{UnknownFlags: true}, 19 RunE: func(cmd *cobra.Command, args []string) error { 20 return runProto(proto, args) 21 }, 22 } 23 24 addProtoFlags(protoCmd, proto) 25 return protoCmd 26 } 27 28 func addProtoFlags(protoCmd *cobra.Command, proto *generator.Proto) { 29 protoCmd.PersistentFlags().BoolVarP(&proto.GenHttp, "http", "", false, "generate xx.http.pb.go") 30 } 31 32 func runProto(proto *generator.Proto, args []string) error { 33 modelName := args[0] 34 35 proto.Name = util.Singular(strcase.ToCamel(modelName)) 36 if fs, err := field.ParseFields(args[1:]); err != nil { 37 return err 38 } else { 39 proto.Fields = fs 40 } 41 42 err := proto.Generate() 43 return err 44 }