1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package assets
- import (
- "crypto/md5"
- "embed"
- "encoding/hex"
- "io"
- "io/fs"
- "log/slog"
- "strconv"
- "time"
- )
- //go:embed static
- var _publicFS embed.FS
- //go:embed templates
- var _templateFS embed.FS
- var PublicFS, _ = fs.Sub(_publicFS, "static")
- var TemplateFS, _ = fs.Sub(_templateFS, "templates")
- func getFSHash(files fs.FS) string {
- hash := md5.New()
- err := fs.WalkDir(files, ".", func(path string, d fs.DirEntry, err error) error {
- if err != nil {
- return err
- }
- if d.IsDir() {
- return nil
- }
- file, err := files.Open(path)
- if err != nil {
- return err
- }
- if _, err := io.Copy(hash, file); err != nil {
- return err
- }
- return nil
- })
- if err == nil {
- return hex.EncodeToString(hash.Sum(nil))[:10]
- }
- slog.Warn("Could not compute assets cache", "err", err)
- return strconv.FormatInt(time.Now().Unix(), 10)
- }
- var PublicFSHash = getFSHash(PublicFS)
|