in pitr/agent/main.go [69:141]
func main() {
flag.Parse()
if envSourceFile != "" {
err := godotenv.Load(envSourceFile)
if err != nil {
panic(fmt.Errorf("load env source file error:%s", err.Error()))
}
}
shell := os.Getenv("SHELL")
if shell == "" {
panic(fmt.Errorf("shell does not exist"))
}
if pgData == "" {
pgData = os.Getenv("PGDATA")
if pgData == "" {
panic(fmt.Errorf("PGDATA:no database directory specified and environment variable PGDATA unset"))
}
}
if _, err := os.Stat(pgData); os.IsNotExist(err) {
panic(fmt.Errorf("PGDATA:%s the database directory does not exist", pgData))
}
pgData = strings.Trim(pgData, " ")
if strings.HasSuffix(pgData, "/") {
dirs := strings.Split(pgData, "/")
dirs = dirs[0 : len(dirs)-1]
pgData = strings.Join(dirs, "/")
}
if strings.Trim(tlsCrt, " ") == "" || strings.Trim(tlsKey, " ") == "" {
panic(fmt.Errorf("lack of HTTPs certificate"))
}
if _, err := os.Stat(tlsCrt); os.IsNotExist(err) {
panic(fmt.Errorf("TLS certificate file does not exist"))
}
if _, err := os.Stat(tlsKey); os.IsNotExist(err) {
panic(fmt.Errorf("TLS key file does not exist"))
}
var level = zapcore.InfoLevel
if logLevel == debugLogLevel {
level = zapcore.DebugLevel
}
log = logging.Init(level)
pkg.Init(shell, pgData, log)
SetupApp()
go func() {
if err := Serve(port); err != nil {
panic(err)
}
}()
log.Info("app startup successfully.")
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
if app != nil {
if err := app.Shutdown(); err != nil {
log.Field(logging.ErrorKey, err.Error()).Error("http app closed failure")
}
}
log.Info("app windup successfully.")
log.Info("app has exited...")
}