progdoc/siteopts.go

65 lines
1 KiB
Go
Raw Normal View History

2026-02-01 06:04:15 +00:00
package progdoc
import (
"errors"
"log"
"os"
"path/filepath"
"strings"
)
type Option struct {
configSitemap func(sm *siteMap) error
}
func Meta(meta SiteMeta) Option {
return Option{
configSitemap: func(sm *siteMap) error {
sm.Meta = &meta
return nil
},
}
}
2026-02-07 23:20:02 +00:00
type PathBuilder struct {
path string
2026-02-01 06:04:15 +00:00
}
2026-02-02 10:25:43 +00:00
func StaticFile(path, file string) Option {
return Option{
configSitemap: func(sm *siteMap) error {
_, err := os.Stat(file)
if err != nil {
return err
}
absName, err := filepath.Abs(file)
if err != nil {
return err
}
log.Printf("Static '%s' -> %s", path, file)
sm.Static = append(sm.Static, siteStatic{
Path: path,
Source: fileStaticSource{
Filename: absName,
},
})
return nil
},
}
}
2026-02-01 06:04:15 +00:00
func inferSourceFromFilename(fname string) (pageSource, error) {
absName, err := filepath.Abs(fname)
if err != nil {
return nil, err
}
if strings.HasSuffix(absName, ".md") {
return mdSource{MDFile: absName}, nil
}
return nil, errors.New("unsupported file type")
}