/
main.go
118 lines (96 loc) · 2.17 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package main
import (
"context"
"errors"
"flag"
"fmt"
"os"
"time"
"github.com/94peter/log"
"github.com/94peter/microservice"
"github.com/94peter/microservice/di"
"github.com/94peter/microservice/grpc_tool"
healthpb "github.com/94peter/microservice/grpc_tool/health/pb"
"github.com/94peter/storage"
"github.com/94peter/storage/container/service"
"github.com/94peter/storage/grpc/pb"
"github.com/joho/godotenv"
"google.golang.org/grpc"
)
var (
v = flag.Bool("v", false, "version")
Version = "1.0.0"
BuildTime = time.Now().Local().GoString()
)
func main() {
flag.Parse()
if *v {
fmt.Println("Version: " + Version)
fmt.Println("Build Time: " + BuildTime)
return
}
exePath, err := os.Getwd()
if err != nil {
panic(err)
}
envFile := exePath + "/.env"
if fileExists(envFile) {
err := godotenv.Load(envFile)
if err != nil {
panic("load .env file fail")
}
}
modelCfg, err := storage.GetConfigFromEnv()
if err != nil {
panic(err)
}
microService, err := microservice.New(modelCfg, &mydi{})
if err != nil {
panic(err)
}
service := newService(microService)
microservice.RunService(
service.runGrpc,
)
}
func newService(microService microservice.MicroService[*storage.Config, *mydi]) *myservice {
return &myservice{
MicroService: microService,
}
}
type myservice struct {
microservice.MicroService[*storage.Config, *mydi]
}
func (s *myservice) runGrpc(ctx context.Context) {
cfg, err := s.NewCfg("grpc")
if err != nil {
panic(err)
}
grpcCfg, err := grpc_tool.GetConfigFromEnv()
if err != nil {
panic(err)
}
grpcCfg.SetRegisterServiceFunc(func(s *grpc.Server) {
pb.RegisterGcpServiceServer(s, service.NewGcp(cfg))
healthpb.RegisterHealthServer(s, service.NewHealthService())
})
grpcCfg.Logger = cfg.Log
grpc_tool.RunGrpcServ(ctx, grpcCfg)
}
type mydi struct {
di.CommonServiceDI
*log.LoggerConf `yaml:"log"`
}
func (d *mydi) IsConfEmpty() error {
if log.EnvHasFluentd() && (d.LoggerConf == nil || d.FluentLog == nil) {
return errors.New("log.FluentLog no set")
}
return nil
}
func fileExists(filename string) bool {
info, err := os.Stat(filename)
if os.IsNotExist(err) {
return false
}
return !info.IsDir()
}