From cc9616894a925bfd636ad3591e58bcfeef6b7a46 Mon Sep 17 00:00:00 2001 From: Ben Sarmiento Date: Wed, 25 Oct 2023 18:49:58 +0200 Subject: [PATCH] quick slice sorting fix --- internal/config/v1.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/config/v1.go b/internal/config/v1.go index 7a255ff..56149e3 100644 --- a/internal/config/v1.go +++ b/internal/config/v1.go @@ -65,15 +65,26 @@ func (z *ZurgConfigV1) GetGroupMap() map[string][]string { groupOrderMap[val.Group] = val.GroupOrder } - // Sort the slice based on 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 { - return 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 groupOrderMap[dirs[i]] > groupOrderMap[dirs[j]] }) groupMap[group] = dirs } - return groupMap + // Return a deep copy of the map + result := make(map[string][]string) + for k, v := range groupMap { + temp := make([]string, len(v)) + copy(temp, v) + result[k] = temp + } + + return result } func (z *ZurgConfigV1) MeetsConditions(directory, torrentID, torrentName string, fileNames []string) bool {