From 0fcdacfc691e17ca15dc7e0d48a439ef7a52d9c7 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Thu, 2 Oct 2025 16:29:20 +0200 Subject: feat(backend): handle static files --- main.go | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'main.go') diff --git a/main.go b/main.go index a277761..2d943cd 100644 --- a/main.go +++ b/main.go @@ -2,28 +2,65 @@ package main import ( "context" + "embed" "errors" + "flag" + "fmt" "log/slog" "net/http" "os" "os/signal" + "strconv" "syscall" "git.anhgelus.world/anhgelus/small-world/backend" "github.com/joho/godotenv" ) +//go:embed dist +var embeds embed.FS + +var ( + configFile = "config.toml" + port = 8000 + publicDir = "public" +) + func init() { err := godotenv.Load(".env") if err != nil && !errors.Is(err, os.ErrNotExist) { slog.Error("loading .env", "error", err) } + + if v := os.Getenv("CONFIG_FILE"); v != "" { + configFile = v + } + flag.StringVar(&configFile, "config", configFile, "config file") + + if v := os.Getenv("PORT"); v != "" { + port, err = strconv.Atoi(v) + if err != nil { + panic(err) + } + } + flag.IntVar(&port, "port", port, "server port") + + if v := os.Getenv("PUBLIC_DIR"); v != "" { + publicDir = v + } + flag.StringVar(&publicDir, "public", publicDir, "public directory") } + func main() { + flag.Parse() + r := backend.NewRouter() + backend.HandleStaticFiles(r, "/assets", backend.UsableEmbedFS("dist", embeds)) + backend.HandleStaticFiles(r, "/static", os.DirFS(publicDir)) + slog.Info("starting http server") - server := &http.Server{Addr: ":8000", Handler: r} + server := &http.Server{Addr: fmt.Sprintf(":%d", port), Handler: r} errChan := make(chan error) go startServer(server, errChan) -- cgit v1.2.3