fix: Pass pointer to dirty flag to prevent not appending the trailer

This commit is contained in:
Felix Pojtinger
2021-11-26 18:03:08 +01:00
parent dd030c5ac6
commit 832f2b6171
2 changed files with 8 additions and 8 deletions

View File

@@ -75,13 +75,13 @@ func archive(
overwrite bool,
) error {
dirty := false
tw, isRegular, cleanup, err := openTapeWriter(viper.GetString(tapeFlag))
tw, isRegular, cleanup, err := openTapeWriter(tape)
if err != nil {
return err
}
if overwrite && isRegular {
if err := cleanup(false); err != nil {
if err := cleanup(&dirty); err != nil { // dirty will always be false here
return err
}
@@ -98,13 +98,13 @@ func archive(
return err
}
tw, isRegular, cleanup, err = openTapeWriter(viper.GetString(tapeFlag))
tw, isRegular, cleanup, err = openTapeWriter(tape)
if err != nil {
return err
}
}
defer cleanup(dirty)
defer cleanup(&dirty)
first := true
return filepath.Walk(src, func(path string, info fs.FileInfo, err error) error {

View File

@@ -35,7 +35,7 @@ var removeCmd = &cobra.Command{
if err != nil {
return err
}
defer cleanup(dirty)
defer cleanup(&dirty)
metadataPersister := persisters.NewMetadataPersister(viper.GetString(metadataFlag))
if err := metadataPersister.Open(); err != nil {
@@ -94,7 +94,7 @@ var removeCmd = &cobra.Command{
},
}
func openTapeWriter(tape string) (tw *tar.Writer, isRegular bool, cleanup func(dirty bool) error, err error) {
func openTapeWriter(tape string) (tw *tar.Writer, isRegular bool, cleanup func(dirty *bool) error, err error) {
stat, err := os.Stat(tape)
if err == nil {
isRegular = stat.Mode().IsRegular()
@@ -136,9 +136,9 @@ func openTapeWriter(tape string) (tw *tar.Writer, isRegular bool, cleanup func(d
tw = tar.NewWriter(counter)
}
return tw, isRegular, func(dirty bool) error {
return tw, isRegular, func(dirty *bool) error {
// Only write the trailer if we wrote to the archive
if dirty {
if *dirty {
if err := tw.Close(); err != nil {
return err
}