You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
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
|
|
}
|