feat: refactor.

This commit is contained in:
tx7do
2024-05-06 10:38:46 +08:00
parent 72daf43151
commit f4658eb5d9
2 changed files with 62 additions and 2 deletions

View File

@@ -3,8 +3,10 @@ package bootstrap
import (
"fmt"
"github.com/go-kratos/kratos/v2"
"github.com/go-kratos/kratos/v2/log"
kratosRegistry "github.com/go-kratos/kratos/v2/registry"
"github.com/go-kratos/kratos/v2/transport"
"github.com/tx7do/kratos-bootstrap/config"
"github.com/tx7do/kratos-bootstrap/logger"
@@ -14,8 +16,30 @@ import (
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
)
// Bootstrap 应用引导启动
func Bootstrap(serviceInfo *config.ServiceInfo) (*conf.Bootstrap, log.Logger, kratosRegistry.Registrar) {
var (
Service = config.NewServiceInfo(
"",
"1.0.0",
"",
)
)
func NewApp(ll log.Logger, rr kratosRegistry.Registrar, srv ...transport.Server) *kratos.App {
return kratos.New(
kratos.ID(Service.GetInstanceId()),
kratos.Name(Service.Name),
kratos.Version(Service.Version),
kratos.Metadata(Service.Metadata),
kratos.Logger(ll),
kratos.Server(
srv...,
),
kratos.Registrar(rr),
)
}
// doBootstrap 应用引导启动
func doBootstrap(serviceInfo *config.ServiceInfo) (*conf.Bootstrap, log.Logger, kratosRegistry.Registrar) {
// inject command flags
Flags := config.NewCommandFlags()
Flags.Init()
@@ -40,3 +64,20 @@ func Bootstrap(serviceInfo *config.ServiceInfo) (*conf.Bootstrap, log.Logger, kr
return config.GetBootstrapConfig(), ll, reg
}
type InitApp func(logger log.Logger, registrar kratosRegistry.Registrar, bootstrap *conf.Bootstrap) (*kratos.App, func(), error)
func Bootstrap(initApp InitApp) {
// bootstrap
cfg, ll, reg := doBootstrap(Service)
app, cleanup, err := initApp(ll, reg, cfg)
if err != nil {
panic(err)
}
defer cleanup()
if err = app.Run(); err != nil {
panic(err)
}
}

19
bootstrap_test.go Normal file
View File

@@ -0,0 +1,19 @@
package bootstrap
import (
"github.com/go-kratos/kratos/v2"
"github.com/go-kratos/kratos/v2/log"
"github.com/go-kratos/kratos/v2/registry"
v1 "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
"testing"
)
func initApp(logger log.Logger, registrar registry.Registrar, bootstrap *v1.Bootstrap) (*kratos.App, func(), error) {
app := NewApp(logger, registrar)
return app, func() {
}, nil
}
func TestBootstrap(t *testing.T) {
Bootstrap(initApp)
}