From c6ff999702849cfa06ae44b256f03f21af100bb1 Mon Sep 17 00:00:00 2001 From: Shunsuke Suzuki Date: Sat, 4 Jan 2025 13:15:25 +0900 Subject: [PATCH] refactor: fix lint errors --- pkg/unarchive/archives.go | 16 +++++++++++----- pkg/unarchive/unarchive.go | 22 ++++++++-------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/pkg/unarchive/archives.go b/pkg/unarchive/archives.go index 822d0ff1f..f63e17d9a 100644 --- a/pkg/unarchive/archives.go +++ b/pkg/unarchive/archives.go @@ -12,12 +12,14 @@ import ( "github.com/mholt/archives" "github.com/sirupsen/logrus" "github.com/spf13/afero" + "github.com/suzuki-shunsuke/logrus-error/logerr" ) type handler struct { fs afero.Fs dest string filename string + logE *logrus.Entry } const readOnlyPerm = 0o200 @@ -29,7 +31,7 @@ func allowWrite(fs afero.Fs, path string) (func() error, error) { } if originalMode.Mode().Perm()&readOnlyPerm != 0 { - return nil, nil + return nil, nil //nolint:nilnil } if err := os.Chmod(path, originalMode.Mode()|readOnlyPerm); err != nil { @@ -45,7 +47,7 @@ func (h *handler) HandleFile(_ context.Context, f archives.FileInfo) error { parentDir := filepath.Dir(dstPath) if err := osfile.MkdirAll(h.fs, parentDir); err != nil { - return err + return fmt.Errorf("create a directory: %w", err) } if f.IsDir() { @@ -64,7 +66,11 @@ func (h *handler) HandleFile(_ context.Context, f archives.FileInfo) error { return err } if fn != nil { - defer fn() + defer func() { + if err := fn(); err != nil { + logerr.WithError(h.logE, err).Warn("failed to restore the original permission") + } + }() } reader, err := f.Open() @@ -85,7 +91,7 @@ func (h *handler) HandleFile(_ context.Context, f archives.FileInfo) error { return nil } -func (h *handler) Unarchive(ctx context.Context, logE *logrus.Entry, src *File) error { +func (h *handler) Unarchive(ctx context.Context, _ *logrus.Entry, src *File) error { tempFilePath, err := src.Body.Path() if err != nil { return fmt.Errorf("get a temporary file path: %w", err) @@ -124,7 +130,7 @@ func (h *handler) unarchive(ctx context.Context, tarball string) error { func (h *handler) decompress(input io.Reader, decomp archives.Decompressor) error { rc, err := decomp.OpenReader(input) if err != nil { - return err + return fmt.Errorf("open a decompressed file: %w", err) } defer rc.Close() if err := osfile.MkdirAll(h.fs, h.dest); err != nil { diff --git a/pkg/unarchive/unarchive.go b/pkg/unarchive/unarchive.go index 12371352f..85b88cb57 100644 --- a/pkg/unarchive/unarchive.go +++ b/pkg/unarchive/unarchive.go @@ -3,7 +3,6 @@ package unarchive import ( "context" "errors" - "fmt" "io" "path/filepath" @@ -42,12 +41,7 @@ func New(executor Executor, fs afero.Fs) *Unarchiver { } func (u *Unarchiver) Unarchive(ctx context.Context, logE *logrus.Entry, src *File, dest string) error { - arc, err := u.getUnarchiver(src, dest) - if err != nil { - return fmt.Errorf("get the unarchiver or decompressor by the file extension: %w", err) - } - - return arc.Unarchive(ctx, logE, src) //nolint:wrapcheck + return u.getUnarchiver(src, dest).Unarchive(ctx, logE, src) //nolint:wrapcheck } func IsUnarchived(archiveType, assetName string) bool { @@ -61,27 +55,27 @@ func IsUnarchived(archiveType, assetName string) bool { return ext == "" || ext == ".exe" } -func (u *Unarchiver) getUnarchiver(src *File, dest string) (coreUnarchiver, error) { +func (u *Unarchiver) getUnarchiver(src *File, dest string) coreUnarchiver { filename := filepath.Base(src.Filename) if IsUnarchived(src.Type, filename) { return &rawUnarchiver{ dest: filepath.Join(dest, filename), fs: u.fs, - }, nil + } } if src.Type == "dmg" { return &dmgUnarchiver{ dest: dest, executor: u.executor, fs: u.fs, - }, nil + } } if src.Type == "pkg" { return &pkgUnarchiver{ dest: dest, executor: u.executor, fs: u.fs, - }, nil + } } switch ext := filepath.Ext(filename); ext { case ".dmg": @@ -89,18 +83,18 @@ func (u *Unarchiver) getUnarchiver(src *File, dest string) (coreUnarchiver, erro dest: dest, executor: u.executor, fs: u.fs, - }, nil + } case ".pkg": return &pkgUnarchiver{ dest: dest, executor: u.executor, fs: u.fs, - }, nil + } } return &handler{ fs: u.fs, dest: dest, filename: filename, - }, nil + } }