diff options
author | xengineering <me@xengineering.eu> | 2024-03-24 21:07:44 +0100 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2024-03-24 21:12:56 +0100 |
commit | 820b15f71a4ac4aeb0c31dc6b929f2d022cff3b8 (patch) | |
tree | 3bd344625e592fc6adc9b949a894116421307bb4 | |
parent | ce3a2dd68707c5c744aa019417baa12f1dab96e4 (diff) | |
download | webiot-820b15f71a4ac4aeb0c31dc6b929f2d022cff3b8.tar webiot-820b15f71a4ac4aeb0c31dc6b929f2d022cff3b8.tar.zst webiot-820b15f71a4ac4aeb0c31dc6b929f2d022cff3b8.zip |
Replace appdata completely by embed package
The embed package makes it useless to handle static files from the
source tree during runtime. All those files go simply to the embed.FS
variable and are thus embedded into the binary which is easier to
handle.
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | main.go | 24 | ||||
-rw-r--r-- | templates/index.html (renamed from appdata/index.html.tmpl) | 0 |
3 files changed, 13 insertions, 14 deletions
@@ -16,7 +16,6 @@ clean: install: all install -Dm 755 build/$(PROGRAM) $(DESTDIR)$(PREFIX)/bin/$(PROGRAM) install -Dm 644 config/default.json $(DESTDIR)/etc/$(PROGRAM)/config.json - install -Dm 644 appdata/index.html.tmpl $(DESTDIR)$(PREFIX)/share/$(PROGRAM)/index.html.tmpl debug: - go run *.go -c config/example.json -a appdata + go run *.go -c config/example.json @@ -10,15 +10,12 @@ import ( "log" "net/http" "net/netip" - "path/filepath" "text/template" ) -//go:embed simple.css/simple.css +//go:embed simple.css/simple.css templates/index.html var static embed.FS -var appdata string - type RuntimeConfig struct { Devices DevicesConfig Web WebConfig @@ -35,7 +32,7 @@ type WebConfig struct { func main() { configPath := parseFlags() c := parseConfig(configPath) - http.HandleFunc("/", index(c.Devices, appdata)) + http.HandleFunc("/", index(c.Devices)) http.HandleFunc("/api", api()) http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.FS(static)))) @@ -50,8 +47,6 @@ func parseFlags() string { flag.StringVar(&r, "c", "/etc/webiot/config.json", "path to configuration file") - flag.StringVar(&appdata, "a", "/usr/share/webiot", - "path to static application data") flag.Parse() return r @@ -76,13 +71,18 @@ func parseConfig(path string) RuntimeConfig { } // index() returns a HTTP handler for the index page. -func index(devices DevicesConfig, appdata string) func(http.ResponseWriter, *http.Request) { - - path := filepath.Join(appdata, "index.html.tmpl") - html := mustRender(path, devices) +func index(devices DevicesConfig) func(http.ResponseWriter, *http.Request) { + tmpl, err := template.ParseFS(static, "templates/index.html") + if err != nil { + log.Fatal(err) + } return func(w http.ResponseWriter, r *http.Request) { - fmt.Fprint(w, html) + err = tmpl.Execute(w, devices) + if err != nil { + http.Error(w, fmt.Sprint(err), http.StatusInternalServerError) + return + } } } diff --git a/appdata/index.html.tmpl b/templates/index.html index c9fa2f4..c9fa2f4 100644 --- a/appdata/index.html.tmpl +++ b/templates/index.html |