From cdb75d3fcbc9339b897f8c6ff4d69a577f017393 Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Tue, 8 Jul 2025 23:26:05 +0100 Subject: Rewrite in Go --- pkg/index/scan.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pkg/index/scan.go (limited to 'pkg/index/scan.go') diff --git a/pkg/index/scan.go b/pkg/index/scan.go new file mode 100644 index 0000000..dd3d266 --- /dev/null +++ b/pkg/index/scan.go @@ -0,0 +1,47 @@ +package index + +import ( + "fmt" + "log/slog" + "os" + "path" + + "github.com/LMBishop/scrapbook/pkg/config" + "github.com/LMBishop/scrapbook/pkg/site" +) + +func ScanDirectory(dir string, dst *SiteIndex) error { + entries, err := os.ReadDir(dir) + if err != nil { + return err + } + + for _, e := range entries { + if !e.IsDir() { + continue + } + + siteName := e.Name() + sitePath := path.Join(dir, siteName) + cfg, err := readSiteConfig(sitePath) + if err != nil { + slog.Warn("failed to read site", "site", siteName, "reason", err) + continue + } + + site := site.NewSite(siteName, sitePath, cfg) + dst.AddSite(site) + } + + return nil +} + +func readSiteConfig(dir string) (*config.SiteConfig, error) { + siteFile := path.Join(dir, "site.toml") + cfg := &config.SiteConfig{} + err := config.ReadSiteConfig(siteFile, cfg) + if err != nil { + return nil, fmt.Errorf("site file invalid: %s", err) + } + return cfg, nil +} -- cgit v1.2.3-70-g09d2