pagr

A 'static site generator', built using dati.
Log | Files | Refs | Atom

commit 8d32449a46504c61f784604740d9bd02ddcbabde
parent 8932dab59e1012ad63fca9fa076b604abd8c4de8
Author: gearsix <gearsix@tuta.io>
Date:   Tue,  8 Jun 2021 16:42:04 +0100

added loadContent() to pagr

Diffstat:
Mpagr.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 + } +} +