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 }