diff --git a/cmd/cli/commands/run/run.go b/cmd/cli/commands/run/run.go index 5211bf8..45335ab 100644 --- a/cmd/cli/commands/run/run.go +++ b/cmd/cli/commands/run/run.go @@ -124,7 +124,7 @@ func archiveIfChanged(gameID, srcDir, destTarGz, stateFile string) error { defer f.Close() if err := archive.Tar(f, srcDir); err != nil { - return fmt.Errorf("failed archiving files") + return fmt.Errorf("failed archiving files: %w", err) } now := time.Now().UTC().Format(time.RFC3339) diff --git a/pkg/tools/archive/archive.go b/pkg/tools/archive/archive.go index b3a6b7d..0ebef41 100644 --- a/pkg/tools/archive/archive.go +++ b/pkg/tools/archive/archive.go @@ -83,23 +83,23 @@ func Tar(file io.Writer, root string) error { // Walk again to add files err := filepath.Walk(root, func(path string, info os.FileInfo, walkErr error) error { if walkErr != nil { - return walkErr + return fmt.Errorf("failed to walk through the directory: %w", walkErr) } - path, err := filepath.Rel(root, path) + relpath, err := filepath.Rel(root, path) if err != nil { - return err + return fmt.Errorf("failed to make relative path: %w", err) } // Create tar header header, err := tar.FileInfoHeader(info, path) if err != nil { - return err + return fmt.Errorf("failed to make file info header: %w", err) } - header.Name = path + header.Name = relpath if err := tw.WriteHeader(header); err != nil { - return err + return fmt.Errorf("failed to write header: %w", err) } if !info.Mode().IsRegular() { @@ -108,11 +108,11 @@ func Tar(file io.Writer, root string) error { file, err := os.Open(path) if err != nil { - return err + return fmt.Errorf("failed to open file: %w", err) } defer file.Close() if _, err := io.Copy(tw, file); err != nil { - return err + return fmt.Errorf("failed to copy file: %w", err) } return nil })