From efe1e2f817375bacbcd052722f5d5d2523d249c3 Mon Sep 17 00:00:00 2001 From: Andy Jordan <2226434+andyleejordan@users.noreply.github.com> Date: Fri, 16 Feb 2024 15:18:57 -0800 Subject: [PATCH] Sort the results of `Get-SecretInfo` correctly Instead of using a `SortedDictionary` which introduced a bug because it required the keys (secret names) to be unique, we just sort the array directly using a comparer that sorts by name. Fixes #95. --- src/code/SecretManagement.cs | 10 ++-------- src/code/Utils.cs | 11 +++++++++++ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/code/SecretManagement.cs b/src/code/SecretManagement.cs index 2e9b6db..3424c09 100644 --- a/src/code/SecretManagement.cs +++ b/src/code/SecretManagement.cs @@ -1092,15 +1092,9 @@ private void WriteResults(SecretInformation[] results) if (results == null) { return; } // Ensure each vaults results are sorted by secret name. - var sortedList = new SortedDictionary(StringComparer.OrdinalIgnoreCase); - foreach (var item in results) - { - sortedList.Add( - key: item.Name, - value: item); - } + Array.Sort(results, new SecretInformationComparer()); - foreach (var item in sortedList.Values) + foreach (var item in results) { WriteObject(item); } diff --git a/src/code/Utils.cs b/src/code/Utils.cs index 3fba6e7..dd1b75f 100644 --- a/src/code/Utils.cs +++ b/src/code/Utils.cs @@ -324,6 +324,17 @@ private SecretInformation() #endregion } + + /// + /// Compares secret information by name. + /// + public class SecretInformationComparer : IComparer + { + public int Compare(SecretInformation x, SecretInformation y) + { + return string.Compare(x.Name, y.Name, StringComparison.Ordinal); + } + } #endregion