in main.go [114:176]
func main() {
err := parseFlags()
if err != nil {
log.Fatal(err)
}
if tlsMinVersionValue > 0 {
if tlsCertFile == "" || tlsKeyFile == "" {
log.Fatalf("-tls-min-version set but missing TLS cert and key files (-tls-cert and -tls-key)")
}
}
if printVersionInfo {
fmt.Printf("Elastic Package Registry version %v\n", version)
os.Exit(0)
}
apmTracer := initAPMTracer()
defer apmTracer.Close()
logger, err := util.NewLogger(util.LoggerOptions{
APMTracer: apmTracer,
Level: logLevel,
Type: logType,
})
if err != nil {
log.Fatalf("Failed to initialize logging: %v", err)
}
defer logger.Sync()
apmTracer.SetLogger(&util.LoggerAdapter{logger.With(zap.String("log.logger", "apm"))})
config := mustLoadConfig(logger)
if dryRun {
logger.Info("Running dry-run mode")
_ = initIndexer(context.Background(), logger, apmTracer, config)
os.Exit(0)
}
logger.Info("Package registry started")
defer logger.Info("Package registry stopped")
initHttpProf(logger)
server := initServer(logger, apmTracer, config)
go func() {
err := runServer(server)
if err != nil && err != http.ErrServerClosed {
logger.Fatal("error occurred while serving", zap.Error(err))
}
}()
initMetricsServer(logger)
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt, syscall.SIGTERM)
<-stop
ctx := context.Background()
if err := server.Shutdown(ctx); err != nil {
logger.Fatal("error on shutdown", zap.Error(err))
}
}