commit e814e9482dda7d821dfd7439eebac4bc00b629a1
parent 59673035ba96eead384408d7ff1d310ede333d82
Author: gearsix <gearsix@tuta.io>
Date: Tue, 6 Jul 2021 12:34:47 +0100
added pagr build() && verbose logging
Diffstat:
M | pagr.go | | | 59 | +++++++++++++++++++++++++++++++++++++++++++++++++++++------ |
1 file changed, 53 insertions(+), 6 deletions(-)
diff --git a/pagr.go b/pagr.go
@@ -1,7 +1,11 @@
package main
import (
+ "bytes"
+ "os"
+ "strings"
"flag"
+ "path/filepath"
"log"
"notabug.org/gearsix/suti"
)
@@ -9,17 +13,31 @@ import (
const Name = "pagr"
const Version = "0.0.0"
+var verbose bool
+
+func vlog(fmt string, args ...interface{}) {
+ if verbose {
+ log.Printf(fmt, args...)
+ }
+}
+
func check(err error) {
if err != nil {
- log.Fatalf("ERROR! %s\n", err)
+ if verbose {
+ log.Panic(err)
+ } else {
+ 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")
+ flag.BoolVar(&verbose, "v", false, "print verbose logs")
flag.Parse()
+ vlog("verbose on")
+
var err error
var config Config
@@ -31,13 +49,42 @@ func main() {
config = NewConfig()
}
- var _ Content
- _, err = LoadContentDir(config.Contents)
+ var c Content
+ c, err = LoadContentDir(config.Contents)
check(err)
- var _ []suti.Template
- _, err = LoadTemplateDir(config.Templates)
+ var t []suti.Template
+ t, err = LoadTemplateDir(config.Templates)
check(err)
+ build(config, c, t)
+
return
}
+
+func build(config Config, pages Content, templates []suti.Template) {
+ var err error
+ var out bytes.Buffer
+
+ for _, pg := range pages {
+ out.Reset()
+ target := pg.GetTemplate()
+ for _, t := range templates {
+ tname := filepath.Base(t.Source)
+ tname = strings.TrimSuffix(tname, filepath.Ext(tname))
+ if tname == target {
+ if out, err = t.Execute(pg); err != nil {
+ log.Printf("Execution error in template '%s':\n", target)
+ check(err)
+ }
+ outp := filepath.Join(config.Output, pg.Path, "index.html")
+ check(os.MkdirAll(filepath.Dir(outp), 0755))
+ check(os.WriteFile(outp, out.Bytes(), 0644))
+ vlog("wrote '%s' -> '%s'", pg.Path, outp)
+ }
+ }
+ if out.Len() == 0 {
+ log.Printf("failed to find template '%s' for '%s'\n", target, pg.Path)
+ }
+ }
+}