package main import ( "context" "flag" "os" "rag/file-system/internal/conf" "github.com/go-kratos/kratos/v2/config" fileconfig "github.com/go-kratos/kratos/v2/config/file" "github.com/go-kratos/kratos/v2/log" ) var ( flagconf string ) func init() { flag.StringVar(&flagconf, "conf", "configs/config.yaml", "config path, eg: -conf config.yaml") } func main() { flag.Parse() logger := log.With(log.NewStdLogger(os.Stdout), "ts", log.DefaultTimestamp, "caller", log.DefaultCaller, "service.kind", "file-system", ) c := config.New( config.WithSource( fileconfig.NewSource(flagconf), ), ) if err := c.Load(); err != nil { panic(err) } var bc conf.Bootstrap if err := c.Scan(&bc); err != nil { panic(err) } ctx, cleanup, err := initApp(&bc, logger) if err != nil { panic(err) } defer cleanup() // Start Watermill router alongside the Kratos app. if ctx.CQRSBus != nil { go func() { if err := ctx.CQRSBus.Router.Run(context.Background()); err != nil { logger.Log(log.LevelError, "msg", "watermill router error", "error", err) } }() defer ctx.CQRSBus.Router.Close() } if err := ctx.App.Run(); err != nil { panic(err) } }