defaultgenerator.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package generator
  2. import (
  3. "fmt"
  4. "runtime"
  5. "github.com/tal-tech/go-zero/tools/goctl/util/console"
  6. "github.com/tal-tech/go-zero/tools/goctl/util/env"
  7. )
  8. // DefaultGenerator defines the environment needs of rpc service generation
  9. type DefaultGenerator struct {
  10. log console.Console
  11. }
  12. // just test interface implement
  13. var _ Generator = (*DefaultGenerator)(nil)
  14. // NewDefaultGenerator returns an instance of DefaultGenerator
  15. func NewDefaultGenerator() Generator {
  16. log := console.NewColorConsole()
  17. return &DefaultGenerator{
  18. log: log,
  19. }
  20. }
  21. // Prepare provides environment detection generated by rpc service,
  22. // including go environment, protoc, whether protoc-gen-go is installed or not
  23. func (g *DefaultGenerator) Prepare() error {
  24. if !env.CanExec() {
  25. return fmt.Errorf("%s: can not start new processes using os.StartProcess or exec.Command", runtime.GOOS)
  26. }
  27. if _, err := env.LookUpGo(); err != nil {
  28. return err
  29. }
  30. if _, err := env.LookUpProtoc(); err != nil {
  31. return err
  32. }
  33. _, err := env.LookUpProtocGenGoctl()
  34. if err == nil {
  35. return nil
  36. }
  37. g.log.Warning("%+v", err)
  38. _, err = env.LookUpProtocGenGo()
  39. return err
  40. }