From 02473d78eb5d8e7ac9d3879aeebd8522df1ae4d7 Mon Sep 17 00:00:00 2001 From: Felix Pojtinger Date: Thu, 2 Dec 2021 00:45:12 +0100 Subject: [PATCH] refactor: Decompose suffix addition and removal --- cmd/stbak/cmd/archive.go | 61 ++++++++++++++++++-------------- cmd/stbak/cmd/recovery_index.go | 62 +++++++++++++++++++-------------- cmd/stbak/cmd/update.go | 29 ++------------- 3 files changed, 74 insertions(+), 78 deletions(-) diff --git a/cmd/stbak/cmd/archive.go b/cmd/stbak/cmd/archive.go index 9539a20..55c79e0 100644 --- a/cmd/stbak/cmd/archive.go +++ b/cmd/stbak/cmd/archive.go @@ -309,32 +309,9 @@ func archive( hdr.PAXRecords[pax.STFSRecordUncompressedSize] = strconv.Itoa(int(hdr.Size)) hdr.Size = int64(fileSizeCounter.BytesRead) - switch compressionFormat { - case compressionFormatGZipKey: - fallthrough - case compressionFormatParallelGZipKey: - hdr.Name += compressionFormatGZipSuffix - case compressionFormatLZ4Key: - hdr.Name += compressionFormatLZ4Suffix - case compressionFormatZStandardKey: - hdr.Name += compressionFormatZStandardSuffix - case compressionFormatBrotliKey: - hdr.Name += compressionFormatBrotliSuffix - case compressionFormatBzip2Key: - fallthrough - case compressionFormatBzip2ParallelKey: - hdr.Name += compressionFormatBzip2Suffix - case compressionFormatNoneKey: - default: - return errUnsupportedCompressionFormat - } - - switch encryptionFormat { - case encryptionFormatAgeKey: - hdr.Name += encryptionFormatAgeSuffix - case compressionFormatNoneKey: - default: - return errUnsupportedEncryptionFormat + hdr.Name, err = addSuffix(hdr.Name, compressionFormat, encryptionFormat) + if err != nil { + return err } } @@ -429,6 +406,38 @@ func checkCompressionLevel(compressionLevel string) error { return nil } +func addSuffix(name string, compressionFormat string, encryptionFormat string) (string, error) { + switch compressionFormat { + case compressionFormatGZipKey: + fallthrough + case compressionFormatParallelGZipKey: + name += compressionFormatGZipSuffix + case compressionFormatLZ4Key: + name += compressionFormatLZ4Suffix + case compressionFormatZStandardKey: + name += compressionFormatZStandardSuffix + case compressionFormatBrotliKey: + name += compressionFormatBrotliSuffix + case compressionFormatBzip2Key: + fallthrough + case compressionFormatBzip2ParallelKey: + name += compressionFormatBzip2Suffix + case compressionFormatNoneKey: + default: + return "", errUnsupportedCompressionFormat + } + + switch encryptionFormat { + case encryptionFormatAgeKey: + name += encryptionFormatAgeSuffix + case compressionFormatNoneKey: + default: + return "", errUnsupportedEncryptionFormat + } + + return name, nil +} + func encrypt( dst io.Writer, encryptionFormat string, diff --git a/cmd/stbak/cmd/recovery_index.go b/cmd/stbak/cmd/recovery_index.go index 4cc2c05..2273293 100644 --- a/cmd/stbak/cmd/recovery_index.go +++ b/cmd/stbak/cmd/recovery_index.go @@ -278,33 +278,11 @@ func indexHeader( } if hdr.FileInfo().Mode().IsRegular() { - switch encryptionFormat { - case encryptionFormatAgeKey: - hdr.Name = strings.TrimSuffix(hdr.Name, encryptionFormatAgeSuffix) - case encryptionFormatNoneKey: - default: - return errUnsupportedEncryptionFormat - } - - switch compressionFormat { - case compressionFormatGZipKey: - fallthrough - case compressionFormatParallelGZipKey: - hdr.Name = strings.TrimSuffix(hdr.Name, compressionFormatGZipSuffix) - case compressionFormatLZ4Key: - hdr.Name = strings.TrimSuffix(hdr.Name, compressionFormatLZ4Suffix) - case compressionFormatZStandardKey: - hdr.Name = strings.TrimSuffix(hdr.Name, compressionFormatZStandardSuffix) - case compressionFormatBrotliKey: - hdr.Name = strings.TrimSuffix(hdr.Name, compressionFormatBrotliSuffix) - case compressionFormatBzip2Key: - fallthrough - case compressionFormatBzip2ParallelKey: - hdr.Name = strings.TrimSuffix(hdr.Name, compressionFormatBzip2Suffix) - case compressionFormatNoneKey: - default: - return errUnsupportedCompressionFormat + newName, err := removeSuffix(hdr.Name, compressionFormat, encryptionFormat) + if err != nil { + return err } + hdr.Name = newName } if err := formatting.PrintCSV(formatting.GetTARHeaderAsCSV(record, block, hdr)); err != nil { @@ -390,6 +368,38 @@ func indexHeader( return nil } +func removeSuffix(name string, compressionFormat string, encryptionFormat string) (string, error) { + switch encryptionFormat { + case encryptionFormatAgeKey: + name = strings.TrimSuffix(name, encryptionFormatAgeSuffix) + case encryptionFormatNoneKey: + default: + return "", errUnsupportedEncryptionFormat + } + + switch compressionFormat { + case compressionFormatGZipKey: + fallthrough + case compressionFormatParallelGZipKey: + name = strings.TrimSuffix(name, compressionFormatGZipSuffix) + case compressionFormatLZ4Key: + name = strings.TrimSuffix(name, compressionFormatLZ4Suffix) + case compressionFormatZStandardKey: + name = strings.TrimSuffix(name, compressionFormatZStandardSuffix) + case compressionFormatBrotliKey: + name = strings.TrimSuffix(name, compressionFormatBrotliSuffix) + case compressionFormatBzip2Key: + fallthrough + case compressionFormatBzip2ParallelKey: + name = strings.TrimSuffix(name, compressionFormatBzip2Suffix) + case compressionFormatNoneKey: + default: + return "", errUnsupportedCompressionFormat + } + + return name, nil +} + func openTapeReadOnly(tape string) (f *os.File, isRegular bool, err error) { fileDescription, err := os.Stat(tape) if err != nil { diff --git a/cmd/stbak/cmd/update.go b/cmd/stbak/cmd/update.go index b4e55ef..ea9526f 100644 --- a/cmd/stbak/cmd/update.go +++ b/cmd/stbak/cmd/update.go @@ -205,32 +205,9 @@ func update( hdr.PAXRecords[pax.STFSRecordUncompressedSize] = strconv.Itoa(int(hdr.Size)) hdr.Size = int64(fileSizeCounter.BytesRead) - switch compressionFormat { - case compressionFormatGZipKey: - fallthrough - case compressionFormatParallelGZipKey: - hdr.Name += compressionFormatGZipSuffix - case compressionFormatLZ4Key: - hdr.Name += compressionFormatLZ4Suffix - case compressionFormatZStandardKey: - hdr.Name += compressionFormatZStandardSuffix - case compressionFormatBrotliKey: - hdr.Name += compressionFormatBrotliSuffix - case compressionFormatBzip2Key: - fallthrough - case compressionFormatBzip2ParallelKey: - hdr.Name += compressionFormatBzip2Suffix - case compressionFormatNoneKey: - default: - return errUnsupportedCompressionFormat - } - - switch encryptionFormat { - case encryptionFormatAgeKey: - hdr.Name += encryptionFormatAgeSuffix - case compressionFormatNoneKey: - default: - return errUnsupportedEncryptionFormat + hdr.Name, err = addSuffix(hdr.Name, compressionFormat, encryptionFormat) + if err != nil { + return err } }