func main()

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...")
}