package web

import (
	"embed"
	"io/fs"
	"log"
	"net/http"
	"os/exec"
)

//go:embed assets
var assetsFS embed.FS

// staticHandler liefert die eingebetteten CSS-/JS-Dateien aus.
func staticHandler() http.Handler {
	sub, err := fs.Sub(assetsFS, "assets")
	if err != nil {
		log.Fatalf("web: eingebettete dateien: %v", err)
	}
	return http.FileServer(http.FS(sub))
}

// writeAsset schreibt eine eingebettete Datei direkt in die Antwort.
func writeAsset(w http.ResponseWriter, name string) {
	data, err := assetsFS.ReadFile("assets/" + name)
	if err != nil {
		http.Error(w, "Datei fehlt: "+name, http.StatusInternalServerError)
		return
	}
	if _, err := w.Write(data); err != nil {
		log.Printf("web: %s ausliefern: %v", name, err)
	}
}

func lookPath(name string) (string, error) { return exec.LookPath(name) }
