| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package main
- import (
- "flag"
- "fmt"
- "log"
- "net/http"
- "os"
- "github.com/porter-dev/porter/internal/repository/gorm"
- "github.com/porter-dev/porter/server/api"
- "github.com/porter-dev/porter/internal/adapter"
- "github.com/porter-dev/porter/internal/config"
- lr "github.com/porter-dev/porter/internal/logger"
- "github.com/porter-dev/porter/server/router"
- prov "github.com/porter-dev/porter/internal/kubernetes/provisioner"
- )
- // Version will be linked by an ldflag during build
- var Version string = "dev"
- func main() {
- var versionFlag bool
- flag.BoolVar(&versionFlag, "version", false, "print version and exit")
- flag.Parse()
- // Exit safely when version is used
- if versionFlag {
- fmt.Println(Version)
- os.Exit(0)
- }
- appConf := config.FromEnv()
- logger := lr.NewConsole(appConf.Debug)
- db, err := adapter.New(&appConf.Db)
- if err != nil {
- logger.Fatal().Err(err).Msg("")
- return
- }
- err = gorm.AutoMigrate(db)
- if err != nil {
- logger.Fatal().Err(err).Msg("")
- return
- }
- var key [32]byte
- for i, b := range []byte(appConf.Db.EncryptionKey) {
- key[i] = b
- }
- repo := gorm.NewRepository(db, &key)
- if appConf.Redis.Enabled {
- redis, err := adapter.NewRedisClient(&appConf.Redis)
- if err != nil {
- logger.Fatal().Err(err).Msg("")
- return
- }
- prov.InitGlobalStream(redis)
- errorChan := make(chan error)
- go prov.GlobalStreamListener(redis, *repo, errorChan)
- }
- a, err := api.New(&api.AppConfig{
- Logger: logger,
- Repository: repo,
- ServerConf: appConf.Server,
- RedisConf: &appConf.Redis,
- CapConf: appConf.Capabilities,
- DBConf: appConf.Db,
- })
- if err != nil {
- logger.Fatal().Err(err).Msg("")
- }
- appRouter := router.New(a)
- address := fmt.Sprintf(":%d", appConf.Server.Port)
- logger.Info().Msgf("Starting server %v", address)
- s := &http.Server{
- Addr: address,
- Handler: appRouter,
- ReadTimeout: appConf.Server.TimeoutRead,
- WriteTimeout: appConf.Server.TimeoutWrite,
- IdleTimeout: appConf.Server.TimeoutIdle,
- }
- if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed {
- log.Fatal("Server startup failed", err)
- }
- }
|