github.com/mistwind/reviewdog@v0.0.0-20230322024206-9cfa11856d58/doghouse/appengine/template.go (about) 1 //go:generate statik -src=./tmpl 2 package main 3 4 import ( 5 "html/template" 6 "log" 7 "net/http" 8 9 "github.com/rakyll/statik/fs" 10 11 _ "github.com/mistwind/reviewdog/doghouse/appengine/statik" 12 ) 13 14 var tmplFiles http.FileSystem 15 16 func mustParseTemplatesFiles(filenames ...string) *template.Template { 17 t, err := parseTemplatesFiles(filenames...) 18 if err != nil { 19 log.Fatal(err) 20 } 21 return t 22 } 23 24 func parseTemplatesFiles(filenames ...string) (*template.Template, error) { 25 var t *template.Template 26 for _, filename := range filenames { 27 if t == nil { 28 t = template.New(filename) 29 } 30 text, err := fs.ReadFile(tmplFiles, filename) 31 if err != nil { 32 return nil, err 33 } 34 t, err = t.Parse(string(text)) 35 if err != nil { 36 return nil, err 37 } 38 } 39 return t, nil 40 } 41 42 var ( 43 topTmpl *template.Template 44 ghTopTmpl *template.Template 45 ghRepoTmpl *template.Template 46 ) 47 48 func initTemplates() { 49 var err error 50 tmplFiles, err = fs.New() 51 if err != nil { 52 log.Fatal(err) 53 } 54 55 topTmpl = mustParseTemplatesFiles( 56 "/base.html", 57 "/index.html", 58 ) 59 60 ghTopTmpl = mustParseTemplatesFiles( 61 "/gh/base.html", 62 "/gh/header.html", 63 "/gh/top.html", 64 ) 65 66 ghRepoTmpl = mustParseTemplatesFiles( 67 "/gh/base.html", 68 "/gh/header.html", 69 "/gh/repo.html", 70 ) 71 }