diff options
author | Alan Pearce | 2025-01-26 21:34:06 +0100 |
---|---|---|
committer | Alan Pearce | 2025-01-26 21:34:06 +0100 |
commit | 04809ffd7971032818238db14feb6d3c95470e3b (patch) | |
tree | b87da3fb771c854b011c75e1026d206d10e9403f /internal | |
parent | e616014e22fca30cb6375352f70f73d234cb1f7c (diff) | |
download | website-04809ffd7971032818238db14feb6d3c95470e3b.tar.lz website-04809ffd7971032818238db14feb6d3c95470e3b.tar.zst website-04809ffd7971032818238db14feb6d3c95470e3b.zip |
use storage.Writer interface in builder
Diffstat (limited to 'internal')
-rw-r--r-- | internal/builder/builder.go | 19 | ||||
-rw-r--r-- | internal/storage/interface.go | 21 |
2 files changed, 34 insertions, 6 deletions
diff --git a/internal/builder/builder.go b/internal/builder/builder.go index 7b12315..8d2f0a4 100644 --- a/internal/builder/builder.go +++ b/internal/builder/builder.go @@ -13,6 +13,7 @@ import ( "go.alanpearce.eu/website/internal/config" "go.alanpearce.eu/website/internal/content" "go.alanpearce.eu/website/internal/sitemap" + "go.alanpearce.eu/website/internal/storage" "go.alanpearce.eu/website/internal/storage/files" "go.alanpearce.eu/website/templates" "go.alanpearce.eu/x/log" @@ -69,11 +70,12 @@ func copyRecursive(storage storage.Writer, src string) error { } -func build(ioConfig *IOConfig, config *config.Config, log *log.Logger) (*Result, error) { - storage := files.NewWriter(ioConfig.Destination, log, &files.Options{ - Compress: !ioConfig.Development, - }) - +func build( + storage storage.Writer, + ioConfig *IOConfig, + config *config.Config, + log *log.Logger, +) (*Result, error) { joinSource := joinSourcePath(ioConfig.Source) log.Debug("output", "dir", ioConfig.Destination) @@ -236,5 +238,10 @@ func BuildSite(ioConfig *IOConfig, cfg *config.Config, log *log.Logger) (*Result templates.Setup() loadCSS(ioConfig.Source) - return build(ioConfig, cfg, log) + var storage storage.Writer + storage = files.NewWriter(ioConfig.Destination, log, &files.Options{ + Compress: !ioConfig.Development, + }) + + return build(storage, ioConfig, cfg, log) } diff --git a/internal/storage/interface.go b/internal/storage/interface.go new file mode 100644 index 0000000..6c8f3cd --- /dev/null +++ b/internal/storage/interface.go @@ -0,0 +1,21 @@ +package storage + +import ( + "io" + + "github.com/a-h/templ" +) + +type Writer interface { + Mkdirp(path string) error + + Open(filename string) (io.ReadCloser, error) + + OpenFileAndVariants(filename string) (io.WriteCloser, error) + + OutputToFile(output io.Reader, filename string) error + + RenderToFile(component templ.Component, filename string) error + + WriterToFile(writer io.WriterTo, filename string) error +} |