package main import ( "flag" "bkb-payment/internal/conf" "github.com/go-kratos/kratos/v2" "github.com/go-kratos/kratos/v2/config" "github.com/go-kratos/kratos/v2/config/file" "github.com/go-kratos/kratos/v2/log" "github.com/go-kratos/kratos/v2/registry" "github.com/go-kratos/kratos/v2/transport/grpc" "github.com/go-kratos/kratos/v2/transport/http" kzap "github.com/go-kratos/kratos/contrib/log/zap/v2" _ "go.uber.org/automaxprocs" ) // go build -ldflags "-X main.Version=x.y.z" var ( // Name is the name of the compiled software. Name string = "bkb.payment" Env string = "dev" // flagconf is the config flag. flagconf string ) func init() { flag.StringVar(&flagconf, "conf", "../../configs", "config path, eg: -conf config.yaml") } func newApp(logger log.Logger, gs *grpc.Server, hs *http.Server, rr registry.Registrar) *kratos.App { return kratos.New( kratos.Name(Name), kratos.Metadata(map[string]string{}), kratos.Logger(logger), kratos.Server( gs, hs, ), kratos.Registrar(rr), ) } func main() { flag.Parse() zlog := kzap.NewLogger(newZapLogger()) logger := log.With(zlog, "caller", log.DefaultCaller, "service.name", Name, ) c := config.New( config.WithSource( file.NewSource(flagconf), // NewNacosConfig(Name, Env), ), ) defer c.Close() if err := c.Load(); err != nil { panic(err) } var bc conf.Bootstrap if err := c.Scan(&bc); err != nil { panic(err) } app, cleanup, err := wireApp(bc.Server, bc.Data, bc.App, bc.Third, logger) if err != nil { panic(err) } defer cleanup() // start and wait for stop signal if err := app.Run(); err != nil { panic(err) } }