group order fix

This commit is contained in:
Ben Sarmiento
2023-10-27 09:43:43 +02:00
parent c713a696c6
commit ecf82c0131

View File

@@ -57,21 +57,21 @@ func (z *ZurgConfigV1) GetDirectories() []string {
func (z *ZurgConfigV1) GetGroupMap() map[string][]string {
var groupMap = make(map[string][]string)
var groupOrderMap = make(map[string]int) // To store GroupOrder for each group
var groupOrderMap = make(map[string]int) // To store GroupOrder for each directory
// Populate the groupMap and groupOrderMap
for directory, val := range z.Directories {
groupMap[val.Group] = append(groupMap[val.Group], directory)
groupOrderMap[val.Group] = val.GroupOrder
groupOrderMap[directory] = val.GroupOrder
}
// Sort the slice based on GroupOrder and then directory name for deterministic order
for group, dirs := range groupMap {
sort.Slice(dirs, func(i, j int) bool {
if groupOrderMap[dirs[i]] == groupOrderMap[dirs[j]] {
return dirs[i] > dirs[j] // Use directory name as secondary sort criterion
return dirs[i] < dirs[j] // Use directory name as secondary sort criterion
}
return groupOrderMap[dirs[i]] > groupOrderMap[dirs[j]]
return groupOrderMap[dirs[i]] < groupOrderMap[dirs[j]]
})
groupMap[group] = dirs
}