package generator import ( "fmt" "runtime" "github.com/tal-tech/go-zero/tools/goctl/util/console" "github.com/tal-tech/go-zero/tools/goctl/util/env" ) // DefaultGenerator defines the environment needs of rpc service generation type DefaultGenerator struct { log console.Console } // just test interface implement var _ Generator = (*DefaultGenerator)(nil) // NewDefaultGenerator returns an instance of DefaultGenerator func NewDefaultGenerator() Generator { log := console.NewColorConsole() return &DefaultGenerator{ log: log, } } // Prepare provides environment detection generated by rpc service, // including go environment, protoc, whether protoc-gen-go is installed or not func (g *DefaultGenerator) Prepare() error { if !env.CanExec() { return fmt.Errorf("%s: can not start new processes using os.StartProcess or exec.Command", runtime.GOOS) } if _, err := env.LookUpGo(); err != nil { return err } if _, err := env.LookUpProtoc(); err != nil { return err } _, err := env.LookUpProtocGenGoctl() if err == nil { return nil } g.log.Warning("%+v", err) _, err = env.LookUpProtocGenGo() return err }