commit 8d32449a46504c61f784604740d9bd02ddcbabde
parent 8932dab59e1012ad63fca9fa076b604abd8c4de8
Author: gearsix <gearsix@tuta.io>
Date: Tue, 8 Jun 2021 16:42:04 +0100
added loadContent() to pagr
Diffstat:
M | pagr.go | | | 51 | ++++++++++++++++++++++++++++++++++++++++++++++----- |
1 file changed, 46 insertions(+), 5 deletions(-)
diff --git a/pagr.go b/pagr.go
@@ -1,17 +1,14 @@
package main
import (
- "fmt"
"flag"
+ "io/fs"
"log"
)
const Name = "pagr"
const Version = "0.0.0"
-func init() {
-}
-
func main() {
flag.StringVar(&cfg, "cfg", "", "path to pagr project configuration file")
flag.BoolVar(&verbose, "verbose", false, "print verbose logs")
@@ -19,7 +16,9 @@ func main() {
config, err := loadConfig(cfg)
check(err)
- fmt.Println(config)
+
+ pages, err := loadContent(config.Contents)
+ check(err)
return
}
@@ -39,3 +38,45 @@ func loadConfig(fpath string) (c Config, e error) {
return
}
+func loadContent(root string) (p map[string]Page, e error) {
+ p = make(map[string]Page)
+ defaults := make(map[string]Meta)
+ e = filepath.Walk(root, func(path string, info fs.FileInfo, err error) error {
+ if err != nil {
+ return
+ }
+
+ if info.IsDir() {
+ p := NewPage(strings.TrimPrefix(path, root))
+ for _, dir := range strings.Split(path, "/") {
+ if _, ok := defaults[dir]; ok {
+ p.MergeMeta(defaults[dir].Meta)
+ }
+ }
+ return
+ }
+
+ pdir := filepath.Dir(path)
+ page := p[pdir]
+
+ if strings.Contains(path, ".page") || strings.Contains(path, ".defaults") {
+ var m Meta
+ err = suti.LoadDataFile(path, &m); err != nil {
+ return err
+ }
+ if strings.Contains(path, ".page") {
+ page.MergeMeta(m)
+ } else if strings.Contains(path, ".defaults") {
+ defaults[pdir] = m
+ }
+ } else if ext := filepath.Ext(path); ext == ".txt" || ext == ".md" || ext == ".html" {
+ page.Body = append(page.Body, NewContentFromFile(path))
+ } else {
+ page.Assets = append(page.Assets, filepath.TrimPrefix(path, root))
+ }
+
+ p[pdir] = page
+ return
+ }
+}
+