56 lines
994 B
Go
56 lines
994 B
Go
package main
|
|
|
|
import (
|
|
"io/fs"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/template/html/v2"
|
|
)
|
|
|
|
func main() {
|
|
app := fiber.New(fiber.Config{
|
|
Views: setupTemplates(),
|
|
})
|
|
|
|
app.Static("/public", "./public")
|
|
|
|
app.Get("/", func(ctx *fiber.Ctx) error {
|
|
return ctx.Render("index", fiber.Map{})
|
|
})
|
|
|
|
app.Listen("localhost:4200")
|
|
}
|
|
|
|
func setupTemplates() *html.Engine {
|
|
engine := html.New("./views", ".html")
|
|
|
|
// TODO: enable only on DEV=true in env vars
|
|
engine.Reload(true)
|
|
|
|
assets := make(map[string]string)
|
|
filepath.WalkDir("./public/assets", func(path string, d fs.DirEntry, err error) error {
|
|
if !d.IsDir() {
|
|
name := d.Name()
|
|
parts := strings.Split(name, ".")
|
|
|
|
var key string
|
|
if len(parts) < 2 {
|
|
key = name
|
|
} else {
|
|
key = parts[0] + "." + parts[len(parts)-1]
|
|
}
|
|
|
|
assets[key] = path
|
|
}
|
|
return nil
|
|
})
|
|
engine.AddFunc("GetAsset", func(key string) string {
|
|
return assets[key]
|
|
})
|
|
|
|
// TODO: i18n
|
|
|
|
return engine
|
|
}
|