MCPcopy
hub / github.com/avelino/awesome-go / renderCategories

Function renderCategories

main.go:205–241  ·  view source on GitHub ↗
(categories map[string]Category)

Source from the content-addressed store, hash-verified

203}
204
205func renderCategories(categories map[string]Category) error {
206 for _, category := range categories {
207 categoryDir := filepath.Join(outDir, category.Slug)
208 if err := mkdirAll(categoryDir); err != nil {
209 return fmt.Errorf("create category dir `%s`: %w", categoryDir, err)
210 }
211
212 // FIXME: embed templates
213 categoryIndexFilename := filepath.Join(categoryDir, "index.html")
214 fmt.Printf("Write category Index file: %s\n", categoryIndexFilename)
215
216 buf := bytes.NewBuffer(nil)
217 if err := tpl.Lookup("category-index.tmpl.html").Execute(buf, category); err != nil {
218 return fmt.Errorf("render category `%s`: %w", categoryDir, err)
219 }
220
221 // Sanitize HTML. This is not necessary, but allows to have content
222 // of all html files in same style.
223 {
224 doc, err := goquery.NewDocumentFromReader(buf)
225 if err != nil {
226 return fmt.Errorf("create goquery instance for `%s`: %w", categoryDir, err)
227 }
228
229 html, err := doc.Html()
230 if err != nil {
231 return fmt.Errorf("render goquery html for `%s`: %w", categoryDir, err)
232 }
233
234 if err := os.WriteFile(categoryIndexFilename, []byte(html), 0644); err != nil {
235 return fmt.Errorf("write category file `%s`: %w", categoryDir, err)
236 }
237 }
238 }
239
240 return nil
241}
242
243func renderSitemap(categories map[string]Category, projects []*Project) error {
244 f, err := os.Create(outSitemapFile)

Callers 1

buildStaticSiteFunction · 0.85

Calls 1

mkdirAllFunction · 0.85

Tested by

no test coverage detected