pomerium/ui/embed_local.go

40 lines
574 B
Go

//go:build !embed_pomerium
package ui
import (
"embed"
"fmt"
"io/fs"
"os"
"path/filepath"
)
var (
//go:embed dist/*
uiFS embed.FS
)
func openFile(name string) (f fs.File, etag string, err error) {
f, err = os.Open(filepath.Join("ui", name))
if os.IsNotExist(err) {
f, err = uiFS.Open(name)
}
if err != nil {
return nil, "", err
}
fi, err := f.Stat()
if err != nil {
_ = f.Close()
return nil, "", err
}
modTime := fi.ModTime()
if modTime.IsZero() {
modTime = startTime
}
etag = fmt.Sprintf("%x", modTime.UnixNano())
return f, etag, nil
}