/
main.go
86 lines (76 loc) · 2.47 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
package main
import (
"context"
adapter "github.com/funnyecho/code-push/daemon/interface/grpc_adapter"
"github.com/funnyecho/code-push/gateway/interface/http"
"github.com/funnyecho/code-push/gateway/usecase"
http_kit "github.com/funnyecho/code-push/pkg/interfacekit/http"
zap_log "github.com/funnyecho/code-push/pkg/log/zap"
"github.com/funnyecho/code-push/pkg/svrkit"
"github.com/funnyecho/code-push/pkg/tracing"
"github.com/opentracing/opentracing-go"
"go.uber.org/zap"
)
var serveCmdOptions serveConfig
func main() {
svrkit.RunCmd(
"code-push.gateway",
svrkit.WithServeCmd(
svrkit.WithServeCmdConfigurable(),
svrkit.WithServeCmdBindFlag(&serveCmdOptions),
svrkit.WithServeCmdConfigValidation(&serveCmdOptions),
svrkit.WithServeCmdPromFactorySetup(),
svrkit.WithServeCmdRun(onServe),
),
)
}
func onServe(ctx context.Context, args []string) error {
var logger *zap.SugaredLogger
{
var zapLogger *zap.Logger
if serveCmdOptions.Debug {
zapLogger, _ = zap.NewDevelopment()
} else {
zapLogger, _ = zap.NewProduction()
}
logger = zapLogger.Sugar()
defer logger.Sync()
}
openTracer, openTracerCloser, openTracerErr := tracing.InitTracer(
"sys.g",
zap_log.New(logger.With("component", "opentracing")),
)
if openTracerErr == nil {
opentracing.SetGlobalTracer(openTracer)
defer openTracerCloser.Close()
} else {
logger.Infow("failed to init openTracer", "error", openTracerErr)
}
daemonAdapter := adapter.New(
zap_log.New(logger.With("component", "adapters", "adapter", "code-push.d")),
func(options *adapter.Options) {
options.ServerAddr = serveCmdOptions.AddrDaemon
},
)
daemonConnErr := daemonAdapter.Conn()
if daemonConnErr != nil {
return daemonConnErr
}
defer daemonAdapter.Close()
daemonAdapter.Debug("connected to code-push.daemon", "addr", serveCmdOptions.AddrDaemon)
uc := usecase.New(func(config *usecase.CtorConfig) {
config.Logger = zap_log.New(logger.With("component", "usecase"))
config.DaemonAdapter = daemonAdapter
config.Options.RootUserName = serveCmdOptions.RootUserName
config.Options.RootUserPwd = serveCmdOptions.RootUserPwd
})
return http_kit.ListenAndServe(
http_kit.WithServePort(serveCmdOptions.Port),
http_kit.WithServeHandler(http.New(func(options *http.Options) {
options.Debug = serveCmdOptions.Debug
options.UseCase = uc
options.Logger = zap_log.New(logger.With("component", "interfaces", "interface", "http"))
options.AppCenterPath = serveCmdOptions.AppCenterPath
})),
)
}