From 94fdd387cf154d595869be7762fc876de25aec9f Mon Sep 17 00:00:00 2001 From: Paul Betts Date: Thu, 21 Aug 2014 16:34:07 -0700 Subject: [PATCH] Fix up Squirrel --- src/Squirrel/EnumerableExtensions.cs | 105 ++++++------------ src/Squirrel/PackageExtensions.cs | 8 +- src/Squirrel/ReleaseEntry.cs | 21 ++-- src/Squirrel/ReleaseExtensions.cs | 10 +- .../SquirrelAwareExecutableDetector.cs | 12 +- src/Squirrel/UpdateInfo.cs | 19 ++-- src/Squirrel/UpdateManager.ApplyReleases.cs | 3 +- 7 files changed, 67 insertions(+), 111 deletions(-) diff --git a/src/Squirrel/EnumerableExtensions.cs b/src/Squirrel/EnumerableExtensions.cs index 64a9810e..842e4ddc 100644 --- a/src/Squirrel/EnumerableExtensions.cs +++ b/src/Squirrel/EnumerableExtensions.cs @@ -53,12 +53,9 @@ namespace Squirrel /// List with the elements that share the same maximum key value. public static IList MaxBy(this IEnumerable source, Func keySelector, IComparer comparer) { - if (source == null) - throw new ArgumentNullException("source"); - if (keySelector == null) - throw new ArgumentNullException("keySelector"); - if (comparer == null) - throw new ArgumentNullException("comparer"); + if (source == null) throw new ArgumentNullException("source"); + if (keySelector == null) throw new ArgumentNullException("keySelector"); + if (comparer == null) throw new ArgumentNullException("comparer"); return ExtremaBy(source, keySelector, (key, minValue) => comparer.Compare(key, minValue)); } @@ -67,27 +64,21 @@ namespace Squirrel { var result = new List(); - using (var e = source.GetEnumerator()) - { - if (!e.MoveNext()) - throw new InvalidOperationException("Source sequence doesn't contain any elements."); + using (var e = source.GetEnumerator()) { + if (!e.MoveNext()) throw new InvalidOperationException("Source sequence doesn't contain any elements."); var current = e.Current; var resKey = keySelector(current); result.Add(current); - while (e.MoveNext()) - { + while (e.MoveNext()) { var cur = e.Current; var key = keySelector(cur); var cmp = compare(key, resKey); - if (cmp == 0) - { + if (cmp == 0) { result.Add(cur); - } - else if (cmp > 0) - { + } else if (cmp > 0) { result = new List { cur }; resKey = key; } @@ -106,10 +97,8 @@ namespace Squirrel /// Sequence exhibiting the specified side-effects upon enumeration. public static IEnumerable Do(this IEnumerable source, Action onNext) { - if (source == null) - throw new ArgumentNullException("source"); - if (onNext == null) - throw new ArgumentNullException("onNext"); + if (source == null) throw new ArgumentNullException("source"); + if (onNext == null) throw new ArgumentNullException("onNext"); return DoHelper(source, onNext, _ => { }, () => { }); } @@ -124,12 +113,9 @@ namespace Squirrel /// Sequence exhibiting the specified side-effects upon enumeration. public static IEnumerable Do(this IEnumerable source, Action onNext, Action onCompleted) { - if (source == null) - throw new ArgumentNullException("source"); - if (onNext == null) - throw new ArgumentNullException("onNext"); - if (onCompleted == null) - throw new ArgumentNullException("onCompleted"); + if (source == null) throw new ArgumentNullException("source"); + if (onNext == null) throw new ArgumentNullException("onNext"); + if (onCompleted == null) throw new ArgumentNullException("onCompleted"); return DoHelper(source, onNext, _ => { }, onCompleted); } @@ -144,12 +130,9 @@ namespace Squirrel /// Sequence exhibiting the specified side-effects upon enumeration. public static IEnumerable Do(this IEnumerable source, Action onNext, Action onError) { - if (source == null) - throw new ArgumentNullException("source"); - if (onNext == null) - throw new ArgumentNullException("onNext"); - if (onError == null) - throw new ArgumentNullException("onError"); + if (source == null) throw new ArgumentNullException("source"); + if (onNext == null) throw new ArgumentNullException("onNext"); + if (onError == null) throw new ArgumentNullException("onError"); return DoHelper(source, onNext, onError, () => { }); } @@ -165,34 +148,25 @@ namespace Squirrel /// Sequence exhibiting the specified side-effects upon enumeration. public static IEnumerable Do(this IEnumerable source, Action onNext, Action onError, Action onCompleted) { - if (source == null) - throw new ArgumentNullException("source"); - if (onNext == null) - throw new ArgumentNullException("onNext"); - if (onError == null) - throw new ArgumentNullException("onError"); - if (onCompleted == null) - throw new ArgumentNullException("onCompleted"); + if (source == null) throw new ArgumentNullException("source"); + if (onNext == null) throw new ArgumentNullException("onNext"); + if (onError == null) throw new ArgumentNullException("onError"); + if (onCompleted == null) throw new ArgumentNullException("onCompleted"); return DoHelper(source, onNext, onError, onCompleted); } private static IEnumerable DoHelper(this IEnumerable source, Action onNext, Action onError, Action onCompleted) { - using (var e = source.GetEnumerator()) - { - while (true) - { + using (var e = source.GetEnumerator()) { + while (true) { var current = default(TSource); - try - { + try { if (!e.MoveNext()) break; current = e.Current; - } - catch (Exception ex) - { + } catch (Exception ex) { onError(ex); throw; } @@ -214,19 +188,16 @@ namespace Squirrel /// Sequence starting with the specified prefix value, followed by the source sequence. public static IEnumerable StartWith(this IEnumerable source, params TSource[] values) { - if (source == null) - throw new ArgumentNullException("source"); + if (source == null) throw new ArgumentNullException("source"); return source.StartWith_(values); } static IEnumerable StartWith_(this IEnumerable source, params TSource[] values) { - foreach (var x in values) - yield return x; + foreach (var x in values) yield return x; - foreach (var item in source) - yield return item; + foreach (var item in source) yield return item; } /// @@ -239,10 +210,8 @@ namespace Squirrel /// Sequence that contains the elements from the source sequence with distinct key values. public static IEnumerable Distinct(this IEnumerable source, Func keySelector) { - if (source == null) - throw new ArgumentNullException("source"); - if (keySelector == null) - throw new ArgumentNullException("keySelector"); + if (source == null) throw new ArgumentNullException("source"); + if (keySelector == null) throw new ArgumentNullException("keySelector"); return source.Distinct_(keySelector, EqualityComparer.Default); } @@ -258,12 +227,9 @@ namespace Squirrel /// Sequence that contains the elements from the source sequence with distinct key values. public static IEnumerable Distinct(this IEnumerable source, Func keySelector, IEqualityComparer comparer) { - if (source == null) - throw new ArgumentNullException("source"); - if (keySelector == null) - throw new ArgumentNullException("keySelector"); - if (comparer == null) - throw new ArgumentNullException("comparer"); + if (source == null) throw new ArgumentNullException("source"); + if (keySelector == null) throw new ArgumentNullException("keySelector"); + if (comparer == null) throw new ArgumentNullException("comparer"); return source.Distinct_(keySelector, comparer); } @@ -272,11 +238,10 @@ namespace Squirrel { var set = new HashSet(comparer); - foreach (var item in source) - { + foreach (var item in source) { var key = keySelector(item); - if (set.Add(key)) - yield return item; + + if (set.Add(key)) yield return item; } } } diff --git a/src/Squirrel/PackageExtensions.cs b/src/Squirrel/PackageExtensions.cs index dd69cd97..b3c15548 100644 --- a/src/Squirrel/PackageExtensions.cs +++ b/src/Squirrel/PackageExtensions.cs @@ -8,8 +8,7 @@ namespace Squirrel { public static string ExtractTitle(this IPackage package) { - if (package == null) - return String.Empty; + if (package == null) return String.Empty; var title = package.Title; return !String.IsNullOrWhiteSpace(title) ? title : package.Id; @@ -17,9 +16,8 @@ namespace Squirrel public static FrameworkVersion DetectFrameworkVersion(this IPackage package) { - return package.GetFiles().Any(x => x.Path.Contains("lib") && x.Path.Contains("45")) - ? FrameworkVersion.Net45 - : FrameworkVersion.Net40; + return package.GetFiles().Any(x => x.Path.Contains("lib") && x.Path.Contains("45")) ? + FrameworkVersion.Net45 : FrameworkVersion.Net40; } } } diff --git a/src/Squirrel/ReleaseEntry.cs b/src/Squirrel/ReleaseEntry.cs index 864c0e1f..bcaca357 100644 --- a/src/Squirrel/ReleaseEntry.cs +++ b/src/Squirrel/ReleaseEntry.cs @@ -54,19 +54,17 @@ namespace Squirrel [IgnoreDataMember] public string PackageName { - get { - return Filename.Substring(0, Filename.IndexOfAny(new[] { '-', '.' })); - } + get { return Filename.Substring(0, Filename.IndexOfAny(new[] { '-', '.' })); } } public string GetReleaseNotes(string packageDirectory) { var zp = new ZipPackage(Path.Combine(packageDirectory, Filename)); - var t = zp.Id; - if (String.IsNullOrWhiteSpace(zp.ReleaseNotes)) + if (String.IsNullOrWhiteSpace(zp.ReleaseNotes)) { throw new Exception(String.Format("Invalid 'ReleaseNotes' value in nuspec file at '{0}'", Path.Combine(packageDirectory, Filename))); + } return zp.ReleaseNotes; } @@ -186,15 +184,14 @@ namespace Squirrel public static ReleasePackage GetPreviousRelease(IEnumerable releaseEntries, IReleasePackage package, string targetDir) { - if (releaseEntries == null || !releaseEntries.Any()) - return null; + if (releaseEntries == null || !releaseEntries.Any()) return null; return releaseEntries - .Where(x => x.IsDelta == false) - .Where(x => x.Version < package.ToVersion()) - .OrderByDescending(x => x.Version) - .Select(x => new ReleasePackage(Path.Combine(targetDir, x.Filename), true)) - .FirstOrDefault(); + .Where(x => x.IsDelta == false) + .Where(x => x.Version < package.ToVersion()) + .OrderByDescending(x => x.Version) + .Select(x => new ReleasePackage(Path.Combine(targetDir, x.Filename), true)) + .FirstOrDefault(); } } } diff --git a/src/Squirrel/ReleaseExtensions.cs b/src/Squirrel/ReleaseExtensions.cs index 30b431c7..df1a5cc0 100644 --- a/src/Squirrel/ReleaseExtensions.cs +++ b/src/Squirrel/ReleaseExtensions.cs @@ -17,8 +17,8 @@ namespace Squirrel public static Version ToVersion(this string fileName) { var parts = (new FileInfo(fileName)).Name - .Replace(".nupkg", "").Replace("-delta", "") - .Split('.', '-').Reverse(); + .Replace(".nupkg", "").Replace("-delta", "") + .Split('.', '-').Reverse(); var numberRegex = new Regex(@"^\d+$"); @@ -28,13 +28,11 @@ namespace Squirrel .Reverse() .ToArray(); - if (versionFields.Length < 2 || versionFields.Length > 4) - { + if (versionFields.Length < 2 || versionFields.Length > 4) { return null; } - switch (versionFields.Length) - { + switch (versionFields.Length) { case 2: return new Version(versionFields[0], versionFields[1]); case 3: diff --git a/src/Squirrel/SquirrelAwareExecutableDetector.cs b/src/Squirrel/SquirrelAwareExecutableDetector.cs index c26a3723..af95b6eb 100644 --- a/src/Squirrel/SquirrelAwareExecutableDetector.cs +++ b/src/Squirrel/SquirrelAwareExecutableDetector.cs @@ -34,14 +34,12 @@ namespace Squirrel static int? GetAssemblySquirrelAwareVersion(string executable) { - try - { + try { var assembly = AssemblyDefinition.ReadAssembly(executable); if (!assembly.HasCustomAttributes) return null; var attrs = assembly.CustomAttributes; - var attribute = attrs.FirstOrDefault(x => - { + var attribute = attrs.FirstOrDefault(x => { if (x.AttributeType.FullName != typeof(AssemblyMetadataAttribute).FullName) return false; if (x.ConstructorArguments.Count != 2) return false; return x.ConstructorArguments[0].Value.ToString() == "SquirrelAwareVersion"; @@ -50,8 +48,7 @@ namespace Squirrel if (attribute == null) return null; int result; - if (!Int32.TryParse(attribute.ConstructorArguments[1].Value.ToString(), NumberStyles.Integer, CultureInfo.CurrentCulture, out result)) - { + if (!Int32.TryParse(attribute.ConstructorArguments[1].Value.ToString(), NumberStyles.Integer, CultureInfo.CurrentCulture, out result)) { return null; } @@ -72,8 +69,7 @@ namespace Squirrel if (!NativeMethods.GetFileVersionInfo(executable, IntPtr.Zero, size, buf)) return null; IntPtr result; int resultSize; - if (!NativeMethods.VerQueryValue(buf, "\\StringFileInfo\\040904B0\\SquirrelAwareVersion", out result, out resultSize)) - { + if (!NativeMethods.VerQueryValue(buf, "\\StringFileInfo\\040904B0\\SquirrelAwareVersion", out result, out resultSize)) { return null; } diff --git a/src/Squirrel/UpdateInfo.cs b/src/Squirrel/UpdateInfo.cs index 21a9cca8..8168846a 100644 --- a/src/Squirrel/UpdateInfo.cs +++ b/src/Squirrel/UpdateInfo.cs @@ -32,9 +32,10 @@ namespace Squirrel // NB: When bootstrapping, CurrentlyInstalledVersion is null! CurrentlyInstalledVersion = currentlyInstalledVersion; ReleasesToApply = (releasesToApply ?? Enumerable.Empty()).ToList(); - FutureReleaseEntry = ReleasesToApply.Any() - ? ReleasesToApply.MaxBy(x => x.Version).FirstOrDefault() - : null; + FutureReleaseEntry = ReleasesToApply.Any() ? + ReleasesToApply.MaxBy(x => x.Version).FirstOrDefault() : + null; + AppFrameworkVersion = appFrameworkVersion; this.PackageDirectory = packageDirectory; @@ -65,13 +66,15 @@ namespace Squirrel return new UpdateInfo(currentVersion, Enumerable.Empty(), packageDirectory, appFrameworkVersion); } - var newerThanUs = availableReleases.Where(x => x.Version > currentVersion.Version) - .OrderBy(v => v.Version); + var newerThanUs = availableReleases + .Where(x => x.Version > currentVersion.Version) + .OrderBy(v => v.Version); + var deltasSize = newerThanUs.Where(x => x.IsDelta).Sum(x => x.Filesize); - return (deltasSize < latestFull.Filesize && deltasSize > 0) - ? new UpdateInfo(currentVersion, newerThanUs.Where(x => x.IsDelta).ToArray(), packageDirectory, appFrameworkVersion) - : new UpdateInfo(currentVersion, new[] { latestFull }, packageDirectory, appFrameworkVersion); + return (deltasSize < latestFull.Filesize && deltasSize > 0) ? + new UpdateInfo(currentVersion, newerThanUs.Where(x => x.IsDelta).ToArray(), packageDirectory, appFrameworkVersion) : + new UpdateInfo(currentVersion, new[] { latestFull }, packageDirectory, appFrameworkVersion); } } } diff --git a/src/Squirrel/UpdateManager.ApplyReleases.cs b/src/Squirrel/UpdateManager.ApplyReleases.cs index cffec376..fc4e8f61 100644 --- a/src/Squirrel/UpdateManager.ApplyReleases.cs +++ b/src/Squirrel/UpdateManager.ApplyReleases.cs @@ -51,8 +51,7 @@ namespace Squirrel { var currentRelease = getReleases().MaxBy(x => x.Name.ToVersion()).FirstOrDefault(); - if (currentRelease.Exists) - { + if (currentRelease.Exists) { var version = currentRelease.Name.ToVersion(); await SquirrelAwareExecutableDetector.GetAllSquirrelAwareApps(currentRelease.FullName)