12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package quickstart
- import (
- _ "embed"
- "os"
- "path/filepath"
- "github.com/wuntsong-org/go-zero-plus/core/logx"
- "github.com/wuntsong-org/go-zero-plus/core/service"
- "github.com/wuntsong-org/go-zero-plus/tools/goctlwt/util/pathx"
- )
- const protoName = "greet.proto"
- var (
- //go:embed idl/greet.proto
- protocContent string
- //go:embed idl/rpc.yaml
- rpcEtcContent string
- zrpcWorkDir string
- )
- type serviceImpl struct {
- starter func()
- }
- func (s serviceImpl) Start() {
- s.starter()
- }
- func (s serviceImpl) Stop() {}
- func initRPCProto() error {
- zrpcWorkDir = filepath.Join(projectDir, "rpc")
- if err := pathx.MkdirIfNotExist(zrpcWorkDir); err != nil {
- return err
- }
- protoFilename := filepath.Join(zrpcWorkDir, protoName)
- rpcBytes := []byte(protocContent)
- return os.WriteFile(protoFilename, rpcBytes, 0o666)
- }
- type micro struct{}
- func newMicroService() micro {
- m := micro{}
- m.mustStartRPCProject()
- return m
- }
- func (m micro) mustStartRPCProject() {
- logx.Must(initRPCProto())
- log.Debug(">> Generating quickstart zRPC project...")
- arg := "goctlwt rpc protoc " + protoName + " --go_out=. --go-grpc_out=. --zrpc_out=. --verbose"
- execCommand(zrpcWorkDir, arg)
- etcFile := filepath.Join(zrpcWorkDir, "etc", "greet.yaml")
- logx.Must(os.WriteFile(etcFile, []byte(rpcEtcContent), 0o666))
- }
- func (m micro) start() {
- mono := newMonoService(true)
- goModTidy(projectDir)
- sg := service.NewServiceGroup()
- sg.Add(serviceImpl{func() {
- log.Debug(">> Ready to start a zRPC server...")
- goStart(zrpcWorkDir)
- }})
- sg.Add(serviceImpl{func() {
- mono.start()
- }})
- sg.Start()
- }
|