Skip to content

Commit

Permalink
deb: Better errors and fewer shadowing danger during data.tar creation
Browse files Browse the repository at this point in the history
  • Loading branch information
erikgeiser committed Feb 5, 2025
1 parent c137301 commit 70e8c90
Showing 1 changed file with 27 additions and 14 deletions.
41 changes: 27 additions & 14 deletions deb/deb.go
Original file line number Diff line number Diff line change
Expand Up @@ -387,36 +387,49 @@ func fillDataTar(info *nfpm.Info, w io.Writer) (md5sums []byte, instSize int64,
}

func createFilesInsideDataTar(info *nfpm.Info, tw *tar.Writer) (md5buf bytes.Buffer, instSize int64, err error) {
// create files and implicit directories
for _, file := range info.Contents {
var size int64 // declare early to avoid shadowing err
switch file.Type {
case files.TypeRPMGhost:
// skip ghost files in deb
continue
continue // skip ghost files in deb

Check warning on line 393 in deb/deb.go

View check run for this annotation

Codecov / codecov/patch

deb/deb.go#L393

Added line #L393 was not covered by tests
case files.TypeDir, files.TypeImplicitDir:
header, headerErr := tarHeader(file, info.MTime) // headerErr to avoid shadowing err
header, err := tarHeader(file, info.MTime)
if err != nil {
return md5buf, 0, fmt.Errorf("build directory header: %w", headerErr)
return md5buf, 0, fmt.Errorf("build directory header for %q: %w",
file.Destination, err)
}

Check warning on line 399 in deb/deb.go

View check run for this annotation

Codecov / codecov/patch

deb/deb.go#L397-L399

Added lines #L397 - L399 were not covered by tests

err = tw.WriteHeader(header)
if err != nil {
return md5buf, 0, fmt.Errorf("create directory %q in data tar: %w",
header.Name, err)
}

Check warning on line 405 in deb/deb.go

View check run for this annotation

Codecov / codecov/patch

deb/deb.go#L403-L405

Added lines #L403 - L405 were not covered by tests
case files.TypeSymlink:
header, headerErr := tarHeader(file, info.MTime) // headerErr to avoid shadowing err
header, err := tarHeader(file, info.MTime)
if err != nil {
return md5buf, 0, fmt.Errorf("build symlink header: %w", headerErr)
return md5buf, 0, fmt.Errorf("build symlink header for %q: %w",
file.Destination, err)
}

Check warning on line 411 in deb/deb.go

View check run for this annotation

Codecov / codecov/patch

deb/deb.go#L409-L411

Added lines #L409 - L411 were not covered by tests

err = newItemInsideTar(tw, []byte{}, header)
if err != nil {
return md5buf, 0, fmt.Errorf("create symlink %q in data tar: %w",
header.Linkname, err)
}

Check warning on line 417 in deb/deb.go

View check run for this annotation

Codecov / codecov/patch

deb/deb.go#L415-L417

Added lines #L415 - L417 were not covered by tests
case files.TypeDebChangelog:
size, err = createChangelogInsideDataTar(tw, &md5buf, info, file.Destination)
size, err := createChangelogInsideDataTar(tw, &md5buf, info, file.Destination)
if err != nil {
return md5buf, 0, fmt.Errorf("write changelog to data tar: %w", err)
}

Check warning on line 422 in deb/deb.go

View check run for this annotation

Codecov / codecov/patch

deb/deb.go#L421-L422

Added lines #L421 - L422 were not covered by tests

instSize += size
default:
size, err = copyToTarAndDigest(file, tw, &md5buf)
}
if err != nil {
return md5buf, 0, err
size, err := copyToTarAndDigest(file, tw, &md5buf)
if err != nil {
return md5buf, 0, fmt.Errorf("write %q to data tar: %w", file.Destination, err)
}

Check warning on line 429 in deb/deb.go

View check run for this annotation

Codecov / codecov/patch

deb/deb.go#L428-L429

Added lines #L428 - L429 were not covered by tests

instSize += size
}
instSize += size
}

return md5buf, instSize, nil
Expand Down

0 comments on commit 70e8c90

Please sign in to comment.