-
Notifications
You must be signed in to change notification settings - Fork 56
/
main.go
66 lines (57 loc) · 1.22 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
package main
import (
"errors"
"mjpclab.dev/ghfs/src/app"
"mjpclab.dev/ghfs/src/param"
"mjpclab.dev/ghfs/src/serverError"
"mjpclab.dev/ghfs/src/setting"
"mjpclab.dev/ghfs/src/version"
"os"
"os/signal"
"syscall"
)
func cleanupOnEnd(appInst *app.App) {
chSignal := make(chan os.Signal)
signal.Notify(chSignal, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-chSignal
appInst.Shutdown()
os.Exit(0)
}()
}
func reopenLogOnHup(appInst *app.App) {
chSignal := make(chan os.Signal)
signal.Notify(chSignal, syscall.SIGHUP)
go func() {
for range chSignal {
errs := appInst.ReOpenLog()
serverError.CheckFatal(errs...)
}
}()
}
func main() {
// params
params, printVersion, printHelp, errs := param.ParseFromCli()
serverError.CheckFatal(errs...)
if printVersion {
version.PrintVersion()
os.Exit(0)
}
if printHelp {
param.PrintHelp()
os.Exit(0)
}
// setting
setting := setting.ParseFromEnv()
// app
appInst, errs := app.NewApp(params, setting)
serverError.CheckFatal(errs...)
if appInst == nil {
serverError.CheckFatal(errors.New("failed to create application instance"))
}
cleanupOnEnd(appInst)
reopenLogOnHup(appInst)
errs = appInst.Open()
serverError.CheckFatal(errs...)
appInst.Shutdown()
}