diff options
Diffstat (limited to 'internal/builder/files.go')
-rw-r--r-- | internal/builder/files.go | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/internal/builder/files.go b/internal/builder/files.go deleted file mode 100644 index a9046d7..0000000 --- a/internal/builder/files.go +++ /dev/null @@ -1,120 +0,0 @@ -package builder - -import ( - "compress/gzip" - "io" - "io/fs" - "os" - "path/filepath" - - "github.com/andybalholm/brotli" -) - -const ( - gzipLevel = 6 - brotliLevel = 9 -) - -type MultiWriteCloser struct { - writers []io.WriteCloser - multiWriter io.Writer -} - -func (mw *MultiWriteCloser) Write(p []byte) (n int, err error) { - return mw.multiWriter.Write(p) -} - -func (mw *MultiWriteCloser) Close() error { - var lastErr error - for _, w := range mw.writers { - err := w.Close() - if err != nil { - lastErr = err - } - } - - return lastErr -} - -func openFileWrite(filename string) (*os.File, error) { - return os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) -} - -func openFileGz(filename string) (*gzip.Writer, error) { - filenameGz := filename + ".gz" - f, err := openFileWrite(filenameGz) - if err != nil { - return nil, err - } - - return gzip.NewWriterLevel(f, gzipLevel) -} - -func openFileBrotli(filename string) (*brotli.Writer, error) { - filenameBrotli := filename + ".br" - f, err := openFileWrite(filenameBrotli) - if err != nil { - return nil, err - } - - return brotli.NewWriterLevel(f, brotliLevel), nil -} - -func multiOpenFile(filename string) (*MultiWriteCloser, error) { - r, err := openFileWrite(filename) - if err != nil { - return nil, err - } - gz, err := openFileGz(filename) - if err != nil { - return nil, err - } - br, err := openFileBrotli(filename) - if err != nil { - return nil, err - } - - return &MultiWriteCloser{ - writers: []io.WriteCloser{r, gz, br}, - multiWriter: io.MultiWriter(r, gz, br), - }, nil -} - -func openFileAndVariants(filename string) (io.WriteCloser, error) { - if compressFiles { - return multiOpenFile(filename) - } - - return openFileWrite(filename) -} - -func copyRecursive(src, dst 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 mkdirp(dst, rel) - } - - sf, err := os.Open(path) - if err != nil { - return err - } - defer sf.Close() - df, err := openFileAndVariants(filepath.Join(dst, rel)) - if err != nil { - return err - } - defer df.Close() - if _, err := io.Copy(df, sf); err != nil { - return err - } - - return nil - }) -} |