main soggy/glerc / ssg / sidebar.go
 1package ssg
 2
 3import (
 4	"os"
 5	"strings"
 6)
 7
 8func GetSidebar(pagesDir string, order []string) ([]SidebarItem, error) {
 9	var nav []SidebarItem
10	for _, item := range order {
11		nav = append(nav, SidebarItem{
12			Name: item,
13			Path: item + ".html",
14		})
15	}
16	entries, err := os.ReadDir(pagesDir)
17	if err != nil {
18		return nav, err
19	}
20	for _, entry := range entries {
21		stem, ok := strings.CutSuffix(entry.Name(), ".md")
22		if !ok {
23			continue
24		}
25		nav = append(nav, SidebarItem{
26			Name: stem,
27			Path: stem + ".html",
28		})
29	}
30	nav = RemoveDuplicateItems(nav)
31	return nav, nil
32}