-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
68 lines (60 loc) · 1.62 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
package main
import (
"circa/manage"
"circa/resolver"
"circa/storages"
"context"
"flag"
"net/http"
"os"
"os/signal"
"syscall"
"github.com/common-nighthawk/go-figure"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"circa/config"
"circa/runner"
"circa/server"
)
func main() {
debug := flag.Bool("debug", false, "dev mode")
jsonLogs := flag.Bool("json-out", false, "json logging")
configPath := flag.String("config", "./circa.json", "Config")
port := flag.String("port", "8000", "Listen port")
managePort := flag.String("manage-port", "", "Listen port")
flag.Parse()
zerolog.SetGlobalLevel(zerolog.InfoLevel)
zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
if *debug {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
if !*jsonLogs {
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
}
runner.RegisterMetrics()
server.RegisterMetrics()
storages.RegisterMetrics()
figure.NewColorFigure("| CIRCA |", "cyberlarge", "yellow", true).Print()
Resolver := resolver.NewResolver()
log.Info().Str("config", *configPath).Msg("Loading... ")
conf, err := config.NewConfigFromDSN(*configPath, Resolver)
if err != nil {
log.Fatal().Err(err).Msg("Can't load config")
return
}
Runner := runner.NewRunner(conf)
done := make(chan os.Signal, 1)
signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
circa := server.Run(cancel, Runner, *port)
var manageSrv *http.Server
if *managePort != "" {
manageSrv = manage.Run(conf, *managePort)
}
<-done
if manageSrv != nil {
manageSrv.Shutdown(ctx)
}
circa.Shutdown()
}