commit 9fff9062f66a2403d343f67adced6dc7a8622679
parent 11fae364cb7981ea0eb303ce5df9ab1f2f5b979f
Author: gearsix <gearsix@tuta.io>
Date: Thu, 24 Jun 2021 18:40:39 +0100
added template loading
Diffstat:
3 files changed, 75 insertions(+), 12 deletions(-)
diff --git a/content.go b/content.go
@@ -26,8 +26,9 @@ var ContentContentsExts = [5]string{
type Content []Page
func LoadContentDir(dir string) (c Content, e error) {
- _, err := os.Stat(dir)
- check(err)
+ if _, e = os.Stat(dir); e != nil {
+ return
+ }
pages := make(map[string]Page)
defaults := make(map[string]Meta)
@@ -36,7 +37,7 @@ func LoadContentDir(dir string) (c Content, e error) {
}
e = filepath.Walk(dir, func(fpath string, info fs.FileInfo, err error) error {
if err != nil {
- return nil
+ return err
}
var path string
diff --git a/pagr.go b/pagr.go
@@ -3,11 +3,18 @@ package main
import (
"flag"
"log"
+ "notabug.org/gearsix/suti"
)
const Name = "pagr"
const Version = "0.0.0"
+func check(err error) {
+ if err != nil {
+ log.Fatalf("ERROR! %s\n", err)
+ }
+}
+
func main() {
cfg := flag.String("cfg", "", "path to pagr project configuration file")
//verbose := flag.Bool("verbose", false, "print verbose logs")
@@ -24,17 +31,13 @@ func main() {
config = NewConfig()
}
- var c Content
- c, err = LoadContentDir(config.Contents)
+ var _ Content
+ _, err = LoadContentDir(config.Contents)
check(err)
- log.Println(c)
+ var _ []suti.Template
+ _, err = LoadTemplateDir(config.Templates)
+ check(err)
return
}
-
-func check(err error) {
- if err != nil {
- log.Fatalf("ERROR! %s\n", err)
- }
-}
diff --git a/template.go b/template.go
@@ -0,0 +1,59 @@
+package main
+
+import (
+ "path/filepath"
+ "io/fs"
+ "strings"
+ "os"
+ "notabug.org/gearsix/suti"
+)
+
+func loadPaths(dir string) ([]string, error) {
+ var r []string
+ err := filepath.Walk(dir,
+ func(fpath string, info fs.FileInfo, e error) error {
+ if e != nil {
+ return e
+ }
+ if !info.IsDir() {
+ r = append(r, fpath)
+ }
+ return e
+ })
+ return r, err
+}
+
+func LoadTemplateDir(dir string) ([]suti.Template, error) {
+ paths := make(map[string][]string) // [template][]partials
+
+ if tpaths, err := loadPaths(dir); err != nil && !os.IsNotExist(err) {
+ return nil, err
+ } else {
+ err = nil
+ for _, t := range tpaths {
+ paths[t] = make([]string, 0)
+ dir, file := filepath.Split(t)
+ ppath := filepath.Join(dir, strings.TrimSuffix(file, filepath.Ext(file)))
+ if _, err := os.Stat(ppath); err == nil {
+ var partials []string
+ if partials, err = loadPaths(ppath); err != nil {
+ return nil, err
+ } else {
+ paths[t] = partials
+ }
+ }
+ }
+ }
+
+ var err error
+ var ret []suti.Template
+ for t, partials := range paths {
+ tmpl, err := suti.LoadTemplateFile(t, partials...)
+ if err != nil {
+ break
+ }
+ ret = append(ret, tmpl)
+ }
+
+ return ret, err
+}