package assets import ( "embed" "encoding/json" . "maragu.dev/gomponents" . "maragu.dev/gomponents/html" ) var ( //go:embed dist/* statics embed.FS manifest map[string]string entrypoints map[string]map[string]map[string][]string ) func entrypointFiles(app, category string) []string { if entrypoints == nil { value, _ := statics.ReadFile("dist/entrypoints.json") json.Unmarshal(value, &entrypoints) } entry, ok := entrypoints["entrypoints"][app] if !ok { return []string{} } files, ok := entry[category] if !ok { return []string{} } return files } func Asset(name string) string { if manifest == nil { value, _ := statics.ReadFile("dist/manifest.json") json.Unmarshal(value, &manifest) } path, ok := manifest[name] if !ok { return "" } return path } func EntrypointJs(app string) []Node { files := entrypointFiles(app, "js") var results []Node for _, file := range files { results = append( results, Script(Src(file)), ) } return results } func EntrypointCss(app string) []Node { files := entrypointFiles(app, "css") var results []Node for _, file := range files { results = append( results, Link(Rel("stylesheet"), Href(file)), ) } return results }