allow pomerium to be embedded as a library (#3415)

This commit is contained in:
Denis Mishin 2022-06-15 20:29:19 -04:00 committed by GitHub
parent 6e1ebffc59
commit d1037d784a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 292 additions and 207 deletions

37
ui/embed_ext.go Normal file
View file

@ -0,0 +1,37 @@
//go:build embed_pomerium
package ui
import (
"fmt"
"io/fs"
)
var (
// ExtUIFS must be set to provide access to UI dist/ files
ExtUIFS fs.FS
)
func openFile(name string) (f fs.File, etag string, err error) {
if ExtUIFS == nil {
return nil, "", fmt.Errorf("ui package was incorrectly compiled with embed_pomerium yet no FS was provided")
}
f, err = ExtUIFS.Open(name)
if err != nil {
return nil, "", fmt.Errorf("open %s: %w", name, 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
}