mirror of
https://github.com/restic/restic.git
synced 2025-03-04 10:39:43 +00:00
ls: extract comparator
This commit is contained in:
parent
1807627dda
commit
c32613a624
1 changed files with 14 additions and 10 deletions
|
@ -498,36 +498,37 @@ func (p *sortedPrinter) LeaveDir(_ string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (p *sortedPrinter) Close() error {
|
func (p *sortedPrinter) Close() error {
|
||||||
|
var comparator func(a, b toSortOutput) int
|
||||||
switch p.sortMode {
|
switch p.sortMode {
|
||||||
case SortModeName:
|
case SortModeName:
|
||||||
case SortModeSize:
|
case SortModeSize:
|
||||||
slices.SortStableFunc(p.collector, func(a, b toSortOutput) int {
|
comparator = func(a, b toSortOutput) int {
|
||||||
return cmp.Or(
|
return cmp.Or(
|
||||||
cmp.Compare(a.node.Size, b.node.Size),
|
cmp.Compare(a.node.Size, b.node.Size),
|
||||||
cmp.Compare(a.nodepath, b.nodepath),
|
cmp.Compare(a.nodepath, b.nodepath),
|
||||||
)
|
)
|
||||||
})
|
}
|
||||||
case SortModeMtime:
|
case SortModeMtime:
|
||||||
slices.SortStableFunc(p.collector, func(a, b toSortOutput) int {
|
comparator = func(a, b toSortOutput) int {
|
||||||
return cmp.Or(
|
return cmp.Or(
|
||||||
a.node.ModTime.Compare(b.node.ModTime),
|
a.node.ModTime.Compare(b.node.ModTime),
|
||||||
cmp.Compare(a.nodepath, b.nodepath),
|
cmp.Compare(a.nodepath, b.nodepath),
|
||||||
)
|
)
|
||||||
})
|
}
|
||||||
case SortModeAtime:
|
case SortModeAtime:
|
||||||
slices.SortStableFunc(p.collector, func(a, b toSortOutput) int {
|
comparator = func(a, b toSortOutput) int {
|
||||||
return cmp.Or(
|
return cmp.Or(
|
||||||
a.node.AccessTime.Compare(b.node.AccessTime),
|
a.node.AccessTime.Compare(b.node.AccessTime),
|
||||||
cmp.Compare(a.nodepath, b.nodepath),
|
cmp.Compare(a.nodepath, b.nodepath),
|
||||||
)
|
)
|
||||||
})
|
}
|
||||||
case SortModeCtime:
|
case SortModeCtime:
|
||||||
slices.SortStableFunc(p.collector, func(a, b toSortOutput) int {
|
comparator = func(a, b toSortOutput) int {
|
||||||
return cmp.Or(
|
return cmp.Or(
|
||||||
a.node.ChangeTime.Compare(b.node.ChangeTime),
|
a.node.ChangeTime.Compare(b.node.ChangeTime),
|
||||||
cmp.Compare(a.nodepath, b.nodepath),
|
cmp.Compare(a.nodepath, b.nodepath),
|
||||||
)
|
)
|
||||||
})
|
}
|
||||||
case SortModeExt:
|
case SortModeExt:
|
||||||
// map name to extension
|
// map name to extension
|
||||||
mapExt := make(map[string]string, len(p.collector))
|
mapExt := make(map[string]string, len(p.collector))
|
||||||
|
@ -536,14 +537,17 @@ func (p *sortedPrinter) Close() error {
|
||||||
mapExt[item.nodepath] = ext
|
mapExt[item.nodepath] = ext
|
||||||
}
|
}
|
||||||
|
|
||||||
slices.SortStableFunc(p.collector, func(a, b toSortOutput) int {
|
comparator = func(a, b toSortOutput) int {
|
||||||
return cmp.Or(
|
return cmp.Or(
|
||||||
cmp.Compare(mapExt[a.nodepath], mapExt[b.nodepath]),
|
cmp.Compare(mapExt[a.nodepath], mapExt[b.nodepath]),
|
||||||
cmp.Compare(a.nodepath, b.nodepath),
|
cmp.Compare(a.nodepath, b.nodepath),
|
||||||
)
|
)
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if comparator != nil {
|
||||||
|
slices.SortStableFunc(p.collector, comparator)
|
||||||
|
}
|
||||||
if p.reverse {
|
if p.reverse {
|
||||||
slices.Reverse(p.collector)
|
slices.Reverse(p.collector)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue