diff options
author | Alan Pearce | 2025-01-26 21:33:23 +0100 |
---|---|---|
committer | Alan Pearce | 2025-01-26 21:33:23 +0100 |
commit | e616014e22fca30cb6375352f70f73d234cb1f7c (patch) | |
tree | ffe6b3981569fe5e6861f066353021d75efac951 /internal/builder | |
parent | abea3d93a675f0689d4a8833825546d7ac01942a (diff) | |
download | website-e616014e22fca30cb6375352f70f73d234cb1f7c.tar.lz website-e616014e22fca30cb6375352f70f73d234cb1f7c.tar.zst website-e616014e22fca30cb6375352f70f73d234cb1f7c.zip |
move copyRecursive to builder
Diffstat (limited to 'internal/builder')
-rw-r--r-- | internal/builder/builder.go | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/internal/builder/builder.go b/internal/builder/builder.go index 90df0f1..7b12315 100644 --- a/internal/builder/builder.go +++ b/internal/builder/builder.go @@ -2,6 +2,9 @@ package builder import ( "fmt" + "io" + "io/fs" + "os" "path" "path/filepath" "slices" @@ -34,6 +37,38 @@ func joinSourcePath(src string) func(string) string { } } +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 @@ func build(ioConfig *IOConfig, config *config.Config, log *log.Logger) (*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") } |