diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-10-02 16:29:20 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-10-02 16:29:20 +0200 |
| commit | 0fcdacfc691e17ca15dc7e0d48a439ef7a52d9c7 (patch) | |
| tree | fdea74d44fca640cc3f5e6135e91ebf0ccbe38b8 /main.go | |
| parent | 4cff7748af65038db3754ab9ce157d528f03a474 (diff) | |
feat(backend): handle static files
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 39 |
1 files changed, 38 insertions, 1 deletions
@@ -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) |
