all repos — homestead @ 543bd2479e0f414cf4adc9e83a4e47052d55f5be

Code for my website

use content collection to read static files in root

Alan Pearce
commit

543bd2479e0f414cf4adc9e83a4e47052d55f5be

parent

526002b13309812ce647faff2bdf66d6991ec467

1 file changed, 23 insertions(+), 34 deletions(-)

changed files
M internal/builder/builder.gointernal/builder/builder.go
@@ -5,7 +5,6 @@ "context"
"database/sql" "fmt" "io" - "io/fs" "os" "path" "path/filepath"
@@ -42,37 +41,23 @@ return filepath.Join(src, rel)
} } -func copyRecursive(storage storage.Writer, src string) error { +func copyFile(storage storage.Writer, src string, rel string) error { buf := new(buffer.Buffer) - return filepath.WalkDir(src, func(path string, d fs.DirEntry, err error) error { - if err != nil { - return err - } - rel, err := filepath.Rel(src, path) - if err != nil { - return err - } - if d.IsDir() { - return storage.Mkdirp(rel) - } - - sf, err := os.Open(path) - if err != nil { - return err - } - defer sf.Close() - buf.Reset() - if _, err := io.Copy(buf, sf); err != nil { - return err - } - if err := storage.Write("/"+rel, buf); err != nil { - return err - } + sf, err := os.Open(src) + if err != nil { + return err + } + defer sf.Close() + buf.Reset() + if _, err := io.Copy(buf, sf); err != nil { + return err + } + if err := storage.Write("/"+rel, buf); err != nil { + return err + } - return nil - }) - + return nil } func build(
@@ -87,11 +72,6 @@ joinSource := joinSourcePath(options.Source)
r := &Result{ Hashes: make([]string, 0), - } - - err := copyRecursive(storage, joinSource("static")) - if err != nil { - return nil, errors.WithMessage(err, "could not copy static files") } log.Debug("reading posts", "source", options.Source)
@@ -271,6 +251,15 @@ return nil, err
} if err := storage.Write("/robots.txt", buf); err != nil { return nil, err + } + + for _, sf := range cc.StaticFiles { + src := joinSource(sf) + log.Debug("copying static file", "sf", sf, "src", src) + err = copyFile(storage, src, sf) + if err != nil { + return nil, err + } } return r, nil