This repository has been archived on 2022-11-08. You can view files and clone it, but cannot push or open issues or pull requests.
simple-server/main.go

53 lines
1.0 KiB
Go

package main
import (
"embed"
_ "embed"
"github.com/pkg/browser"
"io/fs"
"log"
"net/http"
"os"
"os/signal"
"path"
)
//go:generate go run ./builder
//go:embed build/for-build
var asset embed.FS
func main() {
pfxFs := WithPrefix(asset, "build/for-build")
go func() {
err := http.ListenAndServe("localhost:6280", http.FileServer(http.FS(pfxFs)))
if err != nil {
log.Fatal(err)
}
}()
log.Println("you can now open browser with: http://localhost:6280 to access this tool.")
err := browser.OpenURL("http://localhost:6280")
if err != nil {
log.Println("error while opening browser:", err)
}
sign := make(chan os.Signal, 1)
signal.Notify(sign, os.Interrupt, os.Kill)
<-sign
}
type WrappedFS struct {
inner fs.FS
prefix string
}
func (f WrappedFS) Open(p string) (fs.File, error) {
p = path.Join(f.prefix, p)
log.Printf("serving: %s\n", p)
return f.inner.Open(p)
}
// same thing but for ReadFile, Stat, ReadDir, Glob, and maybe Rename, OpenFile?
func WithPrefix(f fs.FS, p string) WrappedFS {
return WrappedFS{f, p}
}