all repos — website @ e616014e22fca30cb6375352f70f73d234cb1f7c

My website

move copyRecursive to builder

Alan Pearce
commit

e616014e22fca30cb6375352f70f73d234cb1f7c

parent

abea3d93a675f0689d4a8833825546d7ac01942a

1 file changed, 36 insertions(+), 1 deletion(-)

changed files
M internal/builder/builder.gointernal/builder/builder.go
@@ -2,6 +2,9 @@ package builder
import ( "fmt" + "io" + "io/fs" + "os" "path" "path/filepath" "slices"
@@ -34,6 +37,38 @@ return filepath.Join(src, rel)
} } +func copyRecursive(storage storage.Writer, src string) error { + 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() + df, err := storage.OpenFileAndVariants(rel) + if err != nil { + return err + } + defer df.Close() + if _, err := io.Copy(df, sf); err != nil { + return err + } + + return nil + }) + +} + func build(ioConfig *IOConfig, config *config.Config, log *log.Logger) (*Result, error) { storage := files.NewWriter(ioConfig.Destination, log, &files.Options{ Compress: !ioConfig.Development,
@@ -46,7 +81,7 @@ r := &Result{
Hashes: make([]string, 0), } - err := storage.CopyRecursive(joinSource("static")) + err := copyRecursive(storage, joinSource("static")) if err != nil { return nil, errors.WithMessage(err, "could not copy static files") }