diff --git a/src/internal/kopia/upload.go b/src/internal/kopia/upload.go index 1b7267cbc..9c8d87424 100644 --- a/src/internal/kopia/upload.go +++ b/src/internal/kopia/upload.go @@ -183,25 +183,7 @@ func (cp *corsoProgress) FinishedFile(relativePath string, err error) { *d.info, ) - folders := []details.FolderEntry{} - - for len(parent.Elements()) > 0 { - nextParent := parent.Dir() - - folders = append(folders, details.FolderEntry{ - RepoRef: parent.String(), - ShortRef: parent.ShortRef(), - ParentRef: nextParent.ShortRef(), - Info: details.ItemInfo{ - Folder: &details.FolderInfo{ - DisplayName: parent.Elements()[len(parent.Elements())-1], - }, - }, - }) - - parent = nextParent - } - + folders := details.FolderEntriesForPath(parent) cp.deets.AddFoldersForItem(folders, *d.info) } diff --git a/src/pkg/backup/details/details.go b/src/pkg/backup/details/details.go index 61f7dc47e..6c0fc2e95 100644 --- a/src/pkg/backup/details/details.go +++ b/src/pkg/backup/details/details.go @@ -127,6 +127,32 @@ func (b *Builder) Details() *Details { return &b.d } +// TODO(ashmrtn): If we never need to pre-populate the modified time of a folder +// we should just merge this with AddFoldersForItem, have Add call +// AddFoldersForItem, and unexport AddFoldersForItem. +func FolderEntriesForPath(parent *path.Builder) []FolderEntry { + folders := []FolderEntry{} + + for len(parent.Elements()) > 0 { + nextParent := parent.Dir() + + folders = append(folders, FolderEntry{ + RepoRef: parent.String(), + ShortRef: parent.ShortRef(), + ParentRef: nextParent.ShortRef(), + Info: ItemInfo{ + Folder: &FolderInfo{ + DisplayName: parent.Elements()[len(parent.Elements())-1], + }, + }, + }) + + parent = nextParent + } + + return folders +} + // AddFoldersForItem adds entries for the given folders. It skips adding entries that // have been added by previous calls. func (b *Builder) AddFoldersForItem(folders []FolderEntry, itemInfo ItemInfo) {