main.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "log"
  6. "net/http"
  7. "os"
  8. "github.com/porter-dev/porter/api/server/router"
  9. "github.com/porter-dev/porter/api/server/shared/config/loader"
  10. )
  11. // Version will be linked by an ldflag during build
  12. var Version string = "dev-ce"
  13. func main() {
  14. var versionFlag bool
  15. flag.BoolVar(&versionFlag, "version", false, "print version and exit")
  16. flag.Parse()
  17. // Exit safely when version is used
  18. if versionFlag {
  19. fmt.Println(Version)
  20. os.Exit(0)
  21. }
  22. cl := loader.NewEnvLoader(Version)
  23. config, err := cl.LoadConfig()
  24. if err != nil {
  25. log.Fatal("Config loading failed: ", err)
  26. }
  27. appRouter := router.NewAPIRouter(config)
  28. address := fmt.Sprintf(":%d", config.ServerConf.Port)
  29. config.Logger.Info().Msgf("Starting server %v", address)
  30. s := &http.Server{
  31. Addr: address,
  32. Handler: appRouter,
  33. ReadTimeout: config.ServerConf.TimeoutRead,
  34. WriteTimeout: config.ServerConf.TimeoutWrite,
  35. IdleTimeout: config.ServerConf.TimeoutIdle,
  36. }
  37. if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed {
  38. config.Logger.Fatal().Err(err).Msg("Server startup failed")
  39. }
  40. }