package handler import ( "html/template" "io/ioutil" "os" "github.com/sirupsen/logrus" ) // CurrentTheme is the set of template being used. var CurrentTheme *template.Template // themeCSS is the CSS of the current theme. var themeCSS []byte // SetTheme parses the provided theme name and sets it as the current theme. func SetTheme(themeName string) error { var err error folder := "templates/" + themeName + "/" CurrentTheme, err = template.ParseFiles( folder+"index.tmpl", // Homepage (listing). folder+"404.tmpl", // Post not found. folder+"500.tmpl", // Internal error. folder+"post.tmpl", // Page for posts. ) if err != nil { return err } // Check if the style CSS exists and is not a directory. info, err := os.Stat(folder + "style.css") if os.IsNotExist(err) || (info != nil && info.IsDir()) { return nil } f, err := os.Open(folder + "style.css") if err != nil { return err } defer func() { err := f.Close() if err != nil { logrus.Fatalf("Error while closing theme CSS file: %v", err) } }() themeCSS, err = ioutil.ReadAll(f) return err }