switch assets to embed

This commit is contained in:
Nazar Kanaev
2021-02-26 12:33:35 +00:00
parent a3146926b1
commit 121101de9d
8 changed files with 79 additions and 178 deletions

45
assets/assets.go Normal file
View File

@@ -0,0 +1,45 @@
package assets
import (
"embed"
"html/template"
"io"
"io/ioutil"
"io/fs"
"os"
)
type assetsfs struct {
embedded *embed.FS
templates map[string]*template.Template
}
var FS assetsfs
func (afs assetsfs) Open(name string) (fs.File, error) {
if afs.embedded != nil {
return afs.embedded.Open(name)
}
return os.DirFS("assets").Open(name)
}
func Render(path string, writer io.Writer, data interface{}) {
var tmpl *template.Template
tmpl, found := FS.templates[path]
if !found {
tmpl = template.Must(template.New(path).Delims("{%", "%}").Funcs(template.FuncMap{
"inline": func(svg string) template.HTML {
svgfile, _ := FS.Open("graphicarts/" + svg)
content, _ := ioutil.ReadAll(svgfile)
svgfile.Close()
return template.HTML(content)
},
}).ParseFS(FS, path))
FS.templates[path] = tmpl
}
tmpl.Execute(writer, data)
}
func init() {
FS.templates = make(map[string]*template.Template)
}

15
assets/assetsfs.go Normal file
View File

@@ -0,0 +1,15 @@
// +build release
package assets
import "embed"
//go:embed *.html
//go:embed graphicarts
//go:embed javascripts
//go:embed stylesheets
var embedded embed.FS
func init() {
FS.embedded = &embedded
}