tijl.dev-core/internal/service/main.go

76 lines
1.8 KiB
Go
Raw Normal View History

2024-08-22 00:44:48 +02:00
package service
import (
"context"
2024-08-22 13:47:16 +02:00
"fmt"
2024-08-22 00:44:48 +02:00
"net/http"
2024-08-25 17:43:55 +02:00
"git.tijl.dev/tijl/tijl.dev-core/internal/apps/flags"
2024-08-22 15:15:16 +02:00
"git.tijl.dev/tijl/tijl.dev-core/internal/assets"
"git.tijl.dev/tijl/tijl.dev-core/internal/config"
"git.tijl.dev/tijl/tijl.dev-core/internal/handlers"
"git.tijl.dev/tijl/tijl.dev-core/internal/oidc"
webinternal "git.tijl.dev/tijl/tijl.dev-core/internal/web"
2024-08-24 17:48:14 +02:00
"git.tijl.dev/tijl/tijl.dev-core/locales"
2024-08-22 15:15:16 +02:00
"git.tijl.dev/tijl/tijl.dev-core/modules/db"
2024-08-24 17:48:14 +02:00
"git.tijl.dev/tijl/tijl.dev-core/modules/i18n"
2024-08-22 15:15:16 +02:00
"git.tijl.dev/tijl/tijl.dev-core/modules/logger"
"git.tijl.dev/tijl/tijl.dev-core/modules/web"
webf "git.tijl.dev/tijl/tijl.dev-core/web"
2024-08-22 00:44:48 +02:00
"github.com/gofiber/contrib/fiberzerolog"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html/v2"
)
func Listen() {
// Load initial context
ctx := context.Background()
// setup logger
log.Load()
// Load config
config.Load()
// Load database
db.Load()
// Setup oidc
oidc.Load(ctx)
// Load assets
assets.Load()
// Load translations
2024-08-24 17:48:14 +02:00
i18n.RegisterTranslations(locales.Embed, ".")
2024-08-22 00:44:48 +02:00
// setup handler
handlers.Setup()
2024-08-25 17:43:55 +02:00
// setup apps
flags.Setup()
2024-08-22 00:44:48 +02:00
// setup web
webinternal.Load()
2024-08-22 20:28:21 +02:00
log.Info().Msg("started internal services")
2024-08-22 00:44:48 +02:00
// Init templating engine
2024-08-22 12:57:38 +02:00
engine := html.NewFileSystem(http.FS(webf.ViewsEmbed), ".html")
engine.Directory = "views"
2024-08-22 00:44:48 +02:00
engine.AddFunc("icon", assets.Svg)
// Init fiber
app := fiber.New(fiber.Config{
Views: engine,
DisableStartupMessage: true,
})
app.Use(fiberzerolog.New(fiberzerolog.Config{
Logger: &log.Logger,
}))
// Setup routes
web.Setup(app)
// Listen web server
2024-08-22 18:04:08 +02:00
log.Info().Int("port", config.Config.Port).Str("host", config.Config.Host).Msg("listening")
2024-08-22 13:47:16 +02:00
if err := app.Listen(fmt.Sprintf("%v:%v", config.Config.Host, config.Config.Port)); err != nil {
2024-08-22 00:44:48 +02:00
log.Fatal().Err(err).Msg("Fiber app error")
}
}