progdoc/generator.go

47 lines
889 B
Go
Raw Normal View History

2026-02-01 04:00:26 +00:00
package progdoc
import (
"os"
"path/filepath"
)
type generator struct {
outDir string
}
2026-02-01 05:46:48 +00:00
type generation struct {
OutDir string
}
func (g generator) genSite(siteMap siteMap) (_ generation, err error) {
2026-02-01 04:00:26 +00:00
outDir := g.outDir
if outDir == "" {
outDir, err = os.MkdirTemp("", "")
if err != nil {
2026-02-01 05:46:48 +00:00
return generation{}, err
2026-02-01 04:00:26 +00:00
}
}
for _, page := range siteMap.Pages {
srcCtx := SourceCtx{Meta: siteMap.Meta}
targetPathDir := filepath.Join(g.outDir, page.Target)
err := os.MkdirAll(targetPathDir, os.ModePerm)
if err != nil {
2026-02-01 05:46:48 +00:00
return generation{}, err
2026-02-01 04:00:26 +00:00
}
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 {
2026-02-01 05:46:48 +00:00
return generation{}, err
2026-02-01 04:00:26 +00:00
}
}
2026-02-01 05:46:48 +00:00
return generation{OutDir: outDir}, nil
2026-02-01 04:00:26 +00:00
}