From 2cff0d741273341d156de6ce6095808126effd3b Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Tue, 12 Dec 2017 10:22:17 -0500 Subject: [PATCH] Fixed sorting of Provisioning Profiles in the Index (#18) They were supposed to be reverse sorted by CreationDate. Also added failure reporting for GetMobileProvision() --- Xamarin.MacDev/MobileProvisionIndex.cs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Xamarin.MacDev/MobileProvisionIndex.cs b/Xamarin.MacDev/MobileProvisionIndex.cs index 5a2437b..0995c69 100644 --- a/Xamarin.MacDev/MobileProvisionIndex.cs +++ b/Xamarin.MacDev/MobileProvisionIndex.cs @@ -183,7 +183,7 @@ namespace Xamarin.MacDev { public int Compare (ProvisioningProfile x, ProvisioningProfile y) { - return x.CreationDate.CompareTo (y.CreationDate); + return y.CreationDate.CompareTo (x.CreationDate); } } @@ -200,7 +200,9 @@ namespace Xamarin.MacDev public static MobileProvisionIndex Load (string fileName) { + var previousCreationDate = DateTime.MaxValue; var index = new MobileProvisionIndex (); + var sorted = true; using (var stream = File.OpenRead (fileName)) { using (var reader = new BinaryReader (stream)) { @@ -211,8 +213,16 @@ namespace Xamarin.MacDev for (int i = 0; i < count; i++) { var profile = ProvisioningProfile.Load (reader); index.ProvisioningProfiles.Add (profile); + + if (profile.CreationDate > previousCreationDate) + sorted = false; + + previousCreationDate = profile.CreationDate; } + if (!sorted) + index.ProvisioningProfiles.Sort (CreationDateComparer); + return index; } } @@ -367,8 +377,6 @@ namespace Xamarin.MacDev var index = OpenIndex (MobileProvision.ProfileDirectory, IndexFileName); var latestCreationDate = DateTime.MinValue; - path = null; - foreach (var profile in index.ProvisioningProfiles) { if (!profile.FileName.EndsWith (extension, StringComparison.Ordinal)) { failures?.Add ($"The profile '{profile.Name}' is not applicable because its FileName ({profile.FileName}) does not end with '{extension}'."); @@ -383,16 +391,10 @@ namespace Xamarin.MacDev if (name == profile.Name || name == profile.Uuid) return MobileProvision.LoadFromFile (Path.Combine (MobileProvision.ProfileDirectory, profile.FileName)); - if (profile.CreationDate > latestCreationDate) { - path = Path.Combine (MobileProvision.ProfileDirectory, profile.FileName); - latestCreationDate = profile.CreationDate; - } + failures?.Add ($"The profile '{profile.Name}' is not applicable because its Name and Uuid ({profile.Uuid}) do not match '{name}'."); } - if (path == null) - return null; - - return MobileProvision.LoadFromFile (path); + return null; } public static IList GetMobileProvisions (MobileProvisionPlatform platform, bool includeExpired = false, bool unique = false, List failures = null)