diff options
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) + } +} |
