diff options
| author | Lain Iwakura <lain@iwakura.page> | 2026-03-25 21:56:03 +0300 |
|---|---|---|
| committer | Lain Iwakura <lain@iwakura.page> | 2026-03-25 21:56:03 +0300 |
| commit | a3397f54c09323b972d733aa4f4e2a4eba6cebc9 (patch) | |
| tree | 2d115b62f9a3d9cd759db75cee9c191fe68e6089 /server/main.go | |
| parent | 319d696398cf5e6df63d29f3129d16cfbe272644 (diff) | |
feat: staaatus
Diffstat (limited to 'server/main.go')
| -rw-r--r-- | server/main.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/server/main.go b/server/main.go new file mode 100644 index 0000000..bffc427 --- /dev/null +++ b/server/main.go @@ -0,0 +1,37 @@ +package main + +import ( + "embed" + "flag" + "io/fs" + "log/slog" + "net/http" // sure, we could use fiber... but for now lets' stick with net/http to keep dependencies to a minimum + "os" +) + +//go:embed static/* +var staticFS embed.FS + +func main() { + addr := flag.String("addr", ":8080", "listen address") + flag.Parse() + + logger := slog.New(slog.NewTextHandler(os.Stdout, nil)) + slog.SetDefault(logger) + + /* strip "static/" prefix so files are served from root */ + subFS, err := fs.Sub(staticFS, "static") + if err != nil { + slog.Error("failed to create sub filesystem", "error", err) + os.Exit(1) + } + + fileServer := http.FileServer(http.FS(subFS)) + http.Handle("/", fileServer) + + slog.Info("starting server", "addr", *addr) + if err := http.ListenAndServe(*addr, nil); err != nil { + slog.Error("server failed", "error", err) + os.Exit(1) + } +} |
