main.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package main
  2. import (
  3. "flag"
  4. "mesh/api"
  5. "mesh/bus"
  6. "mesh/conf"
  7. "mesh/db"
  8. "mesh/log"
  9. "go.uber.org/dig"
  10. "infish.cn/comm"
  11. )
  12. var confFile = flag.String("conf", "./app.yaml", "conf file")
  13. func BuildApp() *dig.Container {
  14. app := dig.New()
  15. _ = app.Provide(func() (*conf.AppConf, error) {
  16. return conf.NewAppConf(*confFile)
  17. })
  18. _ = app.Provide(db.NewMongoDB)
  19. _ = app.Provide(db.NewRedisClient)
  20. _ = app.Provide(bus.NewNatsBus)
  21. // _ = app.Provide(func(app *conf.AppConf) (*etcd.Cli, error) {
  22. // return etcd.NewEtcdCli(&etcd.CliConfig{
  23. // Endpoints: app.Etcd.Endpoints,
  24. // UserName: app.Etcd.UserName,
  25. // Password: app.Etcd.Password,
  26. // DialTimeout: time.Second * time.Duration(app.Etcd.DialTimeout),
  27. // })
  28. // })
  29. _ = app.Provide(api.NewHttpService)
  30. return app
  31. }
  32. func main() {
  33. flag.Parse()
  34. app := BuildApp()
  35. err := app.Invoke(func(svc *api.Service, bus *comm.NatsBus) error {
  36. go bus.Run()
  37. svc.Run()
  38. return nil
  39. })
  40. if err != nil {
  41. log.Errorf("the pink service start fail %+v", err)
  42. panic(err)
  43. }
  44. }