chore(deps): switch to github.com/mholt/archives

This commit is contained in:
Julien Neuhart
2025-02-05 17:00:48 +01:00
parent 6b0c01bd3e
commit 198d9115cc
3 changed files with 295 additions and 34 deletions

View File

@@ -1,7 +1,6 @@
package api
import (
"compress/flate"
"context"
"encoding/json"
"errors"
@@ -19,7 +18,7 @@ import (
"github.com/google/uuid"
"github.com/hashicorp/go-retryablehttp"
"github.com/labstack/echo/v4"
"github.com/mholt/archiver/v3"
"github.com/mholt/archives"
"go.uber.org/zap"
"golang.org/x/sync/errgroup"
"golang.org/x/text/unicode/norm"
@@ -468,22 +467,30 @@ func (ctx *Context) BuildOutputFile() (string, error) {
if len(ctx.outputPaths) == 1 {
ctx.logger.Debug(fmt.Sprintf("only one output file '%s', skip archive creation", ctx.outputPaths[0]))
return ctx.outputPaths[0], nil
}
z := archiver.Zip{
CompressionLevel: flate.DefaultCompression,
MkdirAll: true,
SelectiveCompression: true,
ContinueOnError: false,
OverwriteExisting: false,
ImplicitTopLevelFolder: false,
}
filesInfo, err := archives.FilesFromDisk(ctx.Context, nil, func() map[string]string {
f := make(map[string]string)
for _, outputPath := range ctx.outputPaths {
f[outputPath] = ""
}
return f
}())
archivePath := ctx.GeneratePath(".zip")
out, err := os.Create(archivePath)
if err != nil {
return "", fmt.Errorf("create zip file: %w", err)
}
defer func(out *os.File) {
err := out.Close()
if err != nil {
ctx.logger.Error(fmt.Sprintf("close zip file: %s", err))
}
}(out)
err := z.Archive(ctx.outputPaths, archivePath)
err = archives.Zip{}.Archive(ctx.Context, out, filesInfo)
if err != nil {
return "", fmt.Errorf("archive output files: %w", err)
}