progdoc/generator.go

47 lines
885 B
Go

package progdoc
import (
"os"
"path/filepath"
)
type generator struct {
outDir string
}
type generation struct {
OutDir string
}
func (g generator) genSite(siteMap siteMap) (_ generation, err error) {
outDir := g.outDir
if outDir == "" {
outDir, err = os.MkdirTemp("", "")
if err != nil {
return generation{}, err
}
}
for _, page := range siteMap.Pages {
srcCtx := SourceCtx{Meta: siteMap.Meta}
targetPathDir := filepath.Join(outDir, page.Path)
err := os.MkdirAll(targetPathDir, os.ModePerm)
if err != nil {
return generation{}, err
}
if err := (func(fileName string) error {
f, err := os.Create(fileName)
if err != nil {
return err
}
defer f.Close()
return page.Source.HTML(f, &srcCtx)
})(filepath.Join(targetPathDir, "index.html")); err != nil {
return generation{}, err
}
}
return generation{OutDir: outDir}, nil
}