refactor: Decompose suffix addition and removal

This commit is contained in:
Felix Pojtinger
2021-12-02 00:45:12 +01:00
parent 74fad71b96
commit 02473d78eb
3 changed files with 74 additions and 78 deletions

View File

@@ -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,

View File

@@ -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 {

View File

@@ -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
}
}