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  }