refactor: Decompose logger completely

This commit is contained in:
Felicitas Pojtinger
2021-12-10 21:20:35 +01:00
parent bc7793360f
commit bc0951e476
24 changed files with 172 additions and 132 deletions

View File

@@ -6,7 +6,7 @@ import (
"regexp"
"github.com/pojntfx/stfs/internal/converters"
"github.com/pojntfx/stfs/internal/formatting"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/persisters"
)
@@ -14,6 +14,8 @@ func Find(
state MetadataConfig,
expression string,
onHeader func(hdr *models.Header),
) ([]*tar.Header, error) {
metadataPersister := persisters.NewMetadataPersister(state.Metadata)
if err := metadataPersister.Open(); err != nil {
@@ -26,24 +28,15 @@ func Find(
}
headers := []*tar.Header{}
first := true
for _, dbhdr := range dbHdrs {
if regexp.MustCompile(expression).Match([]byte(dbhdr.Name)) {
if first {
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
return []*tar.Header{}, err
}
first = false
}
hdr, err := converters.DBHeaderToTarHeader(dbhdr)
if err != nil {
return []*tar.Header{}, err
}
if err := formatting.PrintCSV(converters.TARHeaderToCSV(dbhdr.Record, dbhdr.Lastknownrecord, dbhdr.Block, dbhdr.Lastknownblock, hdr)); err != nil {
return []*tar.Header{}, err
if onHeader != nil {
onHeader(dbhdr)
}
headers = append(headers, hdr)

View File

@@ -5,7 +5,7 @@ import (
"context"
"github.com/pojntfx/stfs/internal/converters"
"github.com/pojntfx/stfs/internal/formatting"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/persisters"
)
@@ -13,6 +13,8 @@ func List(
state MetadataConfig,
name string,
onHeader func(hdr *models.Header),
) ([]*tar.Header, error) {
metadataPersister := persisters.NewMetadataPersister(state.Metadata)
if err := metadataPersister.Open(); err != nil {
@@ -25,20 +27,14 @@ func List(
}
headers := []*tar.Header{}
for i, dbhdr := range dbHdrs {
if i == 0 {
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
return []*tar.Header{}, err
}
}
for _, dbhdr := range dbHdrs {
hdr, err := converters.DBHeaderToTarHeader(dbhdr)
if err != nil {
return []*tar.Header{}, err
}
if err := formatting.PrintCSV(converters.TARHeaderToCSV(dbhdr.Record, dbhdr.Lastknownrecord, dbhdr.Block, dbhdr.Lastknownblock, hdr)); err != nil {
return []*tar.Header{}, err
if onHeader != nil {
onHeader(dbhdr)
}
headers = append(headers, hdr)

View File

@@ -10,8 +10,8 @@ import (
"github.com/pojntfx/stfs/internal/compression"
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/formatting"
"github.com/pojntfx/stfs/internal/ioext"
"github.com/pojntfx/stfs/internal/mtio"
"github.com/pojntfx/stfs/internal/records"
@@ -31,6 +31,8 @@ func Archive(
from string,
overwrite bool,
compressionLevel string,
onHeader func(hdr *models.Header),
) ([]*tar.Header, error) {
dirty := false
tw, isRegular, cleanup, err := tape.OpenTapeWriteOnly(state.Drive, recordSize, overwrite)
@@ -91,7 +93,6 @@ func Archive(
defer cleanup(&dirty)
headers := []*tar.Header{}
first := true
return headers, filepath.Walk(from, func(path string, info fs.FileInfo, err error) error {
if err != nil {
return err
@@ -195,16 +196,13 @@ func Archive(
}
}
if first {
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
if onHeader != nil {
dbhdr, err := converters.TarHeaderToDBHeader(-1, -1, -1, -1, hdr)
if err != nil {
return err
}
first = false
}
if err := formatting.PrintCSV(converters.TARHeaderToCSV(-1, -1, -1, -1, hdr)); err != nil {
return err
onHeader(dbhdr)
}
hdrToAppend := *hdr

View File

@@ -7,7 +7,6 @@ import (
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/formatting"
"github.com/pojntfx/stfs/internal/persisters"
"github.com/pojntfx/stfs/internal/records"
"github.com/pojntfx/stfs/internal/signature"
@@ -23,6 +22,8 @@ func Delete(
recordSize int,
name string,
onHeader func(hdr *models.Header),
) error {
dirty := false
tw, isRegular, cleanup, err := tape.OpenTapeWriteOnly(state.Drive, recordSize, false)
@@ -58,10 +59,6 @@ func Delete(
headersToDelete = append(headersToDelete, dbhdrs...)
}
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
return err
}
// Append deletion hdrs to the tape or tar file
hdrs := []*tar.Header{}
for _, dbhdr := range headersToDelete {
@@ -88,8 +85,13 @@ func Delete(
dirty = true
if err := formatting.PrintCSV(converters.TARHeaderToCSV(-1, -1, -1, -1, hdr)); err != nil {
return err
if onHeader != nil {
dbhdr, err := converters.TarHeaderToDBHeader(-1, -1, -1, -1, hdr)
if err != nil {
return err
}
onHeader(dbhdr)
}
hdrs = append(hdrs, hdr)
@@ -122,5 +124,7 @@ func Delete(
func(hdr *tar.Header, isRegular bool) error {
return nil // We sign above, no need to verify
},
onHeader,
)
}

View File

@@ -8,7 +8,6 @@ import (
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/formatting"
"github.com/pojntfx/stfs/internal/persisters"
"github.com/pojntfx/stfs/internal/records"
"github.com/pojntfx/stfs/internal/signature"
@@ -25,6 +24,8 @@ func Move(
recordSize int,
from string,
to string,
onHeader func(hdr *models.Header),
) error {
dirty := false
tw, isRegular, cleanup, err := tape.OpenTapeWriteOnly(state.Drive, recordSize, false)
@@ -60,10 +61,6 @@ func Move(
headersToMove = append(headersToMove, dbhdrs...)
}
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
return err
}
// Append move headers to the tape or tar file
hdrs := []*tar.Header{}
for _, dbhdr := range headersToMove {
@@ -92,8 +89,13 @@ func Move(
dirty = true
if err := formatting.PrintCSV(converters.TARHeaderToCSV(-1, -1, -1, -1, hdr)); err != nil {
return err
if onHeader != nil {
dbhdr, err := converters.TarHeaderToDBHeader(-1, -1, -1, -1, hdr)
if err != nil {
return err
}
onHeader(dbhdr)
}
hdrs = append(hdrs, hdr)
@@ -126,5 +128,7 @@ func Move(
func(hdr *tar.Header, isRegular bool) error {
return nil // We sign above, no need to verify
},
onHeader,
)
}

View File

@@ -8,9 +8,7 @@ import (
"path/filepath"
"strings"
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/formatting"
"github.com/pojntfx/stfs/internal/persisters"
"github.com/pojntfx/stfs/pkg/config"
"github.com/pojntfx/stfs/pkg/hardware"
@@ -26,6 +24,8 @@ func Restore(
from string,
to string,
flatten bool,
onHeader func(hdr *models.Header),
) error {
metadataPersister := persisters.NewMetadataPersister(state.Metadata)
if err := metadataPersister.Open(); err != nil {
@@ -59,20 +59,9 @@ func Restore(
headersToRestore = append(headersToRestore, dbhdrs...)
}
for i, dbhdr := range headersToRestore {
if i == 0 {
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
return err
}
}
hdr, err := converters.DBHeaderToTarHeader(dbhdr)
if err != nil {
return err
}
if err := formatting.PrintCSV(converters.TARHeaderToCSV(dbhdr.Record, dbhdr.Lastknownrecord, dbhdr.Block, dbhdr.Lastknownblock, hdr)); err != nil {
return err
for _, dbhdr := range headersToRestore {
if onHeader != nil {
onHeader(dbhdr)
}
dst := dbhdr.Name
@@ -101,7 +90,7 @@ func Restore(
dst,
false,
false,
nil,
); err != nil {
return err
}

View File

@@ -10,8 +10,8 @@ import (
"github.com/pojntfx/stfs/internal/compression"
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/formatting"
"github.com/pojntfx/stfs/internal/ioext"
"github.com/pojntfx/stfs/internal/mtio"
"github.com/pojntfx/stfs/internal/records"
@@ -31,6 +31,8 @@ func Update(
from string,
overwrite bool,
compressionLevel string,
onHeader func(hdr *models.Header),
) ([]*tar.Header, error) {
dirty := false
tw, isRegular, cleanup, err := tape.OpenTapeWriteOnly(state.Drive, recordSize, false)
@@ -40,7 +42,6 @@ func Update(
defer cleanup(&dirty)
headers := []*tar.Header{}
first := true
return headers, filepath.Walk(from, func(path string, info fs.FileInfo, err error) error {
if err != nil {
return err
@@ -149,19 +150,16 @@ func Update(
}
}
if first {
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
return err
}
first = false
}
if overwrite {
hdr.PAXRecords[records.STFSRecordReplacesContent] = records.STFSRecordReplacesContentTrue
if err := formatting.PrintCSV(converters.TARHeaderToCSV(-1, -1, -1, -1, hdr)); err != nil {
return err
if onHeader != nil {
dbhdr, err := converters.TarHeaderToDBHeader(-1, -1, -1, -1, hdr)
if err != nil {
return err
}
onHeader(dbhdr)
}
hdrToAppend := *hdr
@@ -234,8 +232,13 @@ func Update(
} else {
hdr.Size = 0 // Don't try to seek after the record
if err := formatting.PrintCSV(converters.TARHeaderToCSV(-1, -1, -1, -1, hdr)); err != nil {
return err
if onHeader != nil {
dbhdr, err := converters.TarHeaderToDBHeader(-1, -1, -1, -1, hdr)
if err != nil {
return err
}
onHeader(dbhdr)
}
hdrToAppend := *hdr

View File

@@ -9,8 +9,8 @@ import (
"github.com/pojntfx/stfs/internal/compression"
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/formatting"
"github.com/pojntfx/stfs/internal/mtio"
"github.com/pojntfx/stfs/internal/records"
"github.com/pojntfx/stfs/internal/signature"
@@ -30,7 +30,7 @@ func Fetch(
to string,
preview bool,
showHeader bool,
onHeader func(hdr *models.Header),
) error {
f, isRegular, err := tape.OpenTapeReadOnly(state.Drive)
if err != nil {
@@ -74,14 +74,13 @@ func Fetch(
return err
}
if showHeader {
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
if onHeader != nil {
dbhdr, err := converters.TarHeaderToDBHeader(int64(record), -1, int64(block), -1, hdr)
if err != nil {
return err
}
if err := formatting.PrintCSV(converters.TARHeaderToCSV(int64(record), -1, int64(block), -1, hdr)); err != nil {
return err
}
onHeader(dbhdr)
}
if !preview {

View File

@@ -13,7 +13,6 @@ import (
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/formatting"
"github.com/pojntfx/stfs/internal/ioext"
"github.com/pojntfx/stfs/internal/mtio"
"github.com/pojntfx/stfs/internal/persisters"
@@ -41,6 +40,8 @@ func Index(
hdr *tar.Header,
isRegular bool,
) error,
onHeader func(hdr *models.Header),
) error {
if overwrite {
f, err := os.OpenFile(state.Metadata, os.O_WRONLY|os.O_CREATE, 0600)
@@ -136,7 +137,7 @@ func Index(
return err
}
if err := indexHeader(record, block, hdr, metadataPersister, pipes.Compression, pipes.Encryption); err != nil {
if err := indexHeader(record, block, hdr, metadataPersister, pipes.Compression, pipes.Encryption, onHeader); err != nil {
return err
}
@@ -220,7 +221,7 @@ func Index(
return err
}
if err := indexHeader(record, block, hdr, metadataPersister, pipes.Compression, pipes.Encryption); err != nil {
if err := indexHeader(record, block, hdr, metadataPersister, pipes.Compression, pipes.Encryption, onHeader); err != nil {
return err
}
@@ -254,13 +255,8 @@ func indexHeader(
metadataPersister *persisters.MetadataPersister,
compressionFormat string,
encryptionFormat string,
onHeader func(hdr *models.Header),
) error {
if record == 0 && block == 0 {
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
return err
}
}
uncompressedSize, ok := hdr.PAXRecords[records.STFSRecordUncompressedSize]
if ok {
size, err := strconv.Atoi(uncompressedSize)
@@ -279,8 +275,13 @@ func indexHeader(
hdr.Name = newName
}
if err := formatting.PrintCSV(converters.TARHeaderToCSV(record, -1, block, -1, hdr)); err != nil {
return err
if onHeader != nil {
dbhdr, err := converters.TarHeaderToDBHeader(record, -1, block, -1, hdr)
if err != nil {
return err
}
onHeader(dbhdr)
}
stfsVersion, ok := hdr.PAXRecords[records.STFSRecordVersion]

View File

@@ -8,8 +8,8 @@ import (
"math"
"github.com/pojntfx/stfs/internal/converters"
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
"github.com/pojntfx/stfs/internal/encryption"
"github.com/pojntfx/stfs/internal/formatting"
"github.com/pojntfx/stfs/internal/ioext"
"github.com/pojntfx/stfs/internal/mtio"
"github.com/pojntfx/stfs/internal/signature"
@@ -26,6 +26,8 @@ func Query(
recordSize int,
record int,
block int,
onHeader func(hdr *models.Header),
) ([]*tar.Header, error) {
f, isRegular, err := tape.OpenTapeReadOnly(state.Drive)
if err != nil {
@@ -103,14 +105,13 @@ func Query(
return []*tar.Header{}, err
}
if record == 0 && block == 0 {
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
if onHeader != nil {
dbhdr, err := converters.TarHeaderToDBHeader(record, -1, block, -1, hdr)
if err != nil {
return []*tar.Header{}, err
}
}
if err := formatting.PrintCSV(converters.TARHeaderToCSV(record, -1, block, -1, hdr)); err != nil {
return []*tar.Header{}, err
onHeader(dbhdr)
}
headers = append(headers, hdr)
@@ -192,14 +193,13 @@ func Query(
return []*tar.Header{}, err
}
if record == 0 && block == 0 {
if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil {
if onHeader != nil {
dbhdr, err := converters.TarHeaderToDBHeader(record, -1, block, -1, hdr)
if err != nil {
return []*tar.Header{}, err
}
}
if err := formatting.PrintCSV(converters.TARHeaderToCSV(record, -1, block, -1, hdr)); err != nil {
return []*tar.Header{}, err
onHeader(dbhdr)
}
headers = append(headers, hdr)