group order fix
This commit is contained in:
@@ -57,21 +57,21 @@ func (z *ZurgConfigV1) GetDirectories() []string {
|
|||||||
|
|
||||||
func (z *ZurgConfigV1) GetGroupMap() map[string][]string {
|
func (z *ZurgConfigV1) GetGroupMap() map[string][]string {
|
||||||
var groupMap = make(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
|
// Populate the groupMap and groupOrderMap
|
||||||
for directory, val := range z.Directories {
|
for directory, val := range z.Directories {
|
||||||
groupMap[val.Group] = append(groupMap[val.Group], directory)
|
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
|
// Sort the slice based on GroupOrder and then directory name for deterministic order
|
||||||
for group, dirs := range groupMap {
|
for group, dirs := range groupMap {
|
||||||
sort.Slice(dirs, func(i, j int) bool {
|
sort.Slice(dirs, func(i, j int) bool {
|
||||||
if groupOrderMap[dirs[i]] == groupOrderMap[dirs[j]] {
|
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
|
groupMap[group] = dirs
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user