private CheckForUpdateResult CheckForUpdateResult(RootObject[] obj, Version minVersion, PackageVersionClass updateLevel, string assetFilename, string packageName, string targetFilename) { if (updateLevel == PackageVersionClass.Release) { obj = obj.Where(i => !i.prerelease).ToArray(); } else if (updateLevel == PackageVersionClass.Beta) { obj = obj.Where(i => !i.prerelease || i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase)).ToArray(); } else if (updateLevel == PackageVersionClass.Dev) { obj = obj.Where(i => !i.prerelease || i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase) || i.name.EndsWith("-dev", StringComparison.OrdinalIgnoreCase)).ToArray(); } var availableUpdate = obj .Select(i => CheckForUpdateResult(i, minVersion, assetFilename, packageName, targetFilename)) .Where(i => i != null) .OrderByDescending(i => Version.Parse(i.AvailableVersion)) .FirstOrDefault(); return availableUpdate ?? new CheckForUpdateResult { IsUpdateAvailable = false }; }
private CheckForUpdateResult CheckForUpdateResult(RootObject[] obj, Version minVersion, PackageVersionClass updateLevel, string assetFilename, string packageName, string targetFilename) { if (updateLevel == PackageVersionClass.Release) { // Technically all we need to do is check that it's not pre-release // But let's addititional checks for -beta and -dev to handle builds that might be temporarily tagged incorrectly. obj = obj.Where(i => !i.prerelease && !i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase) && !i.name.EndsWith("-dev", StringComparison.OrdinalIgnoreCase)).ToArray(); } else if (updateLevel == PackageVersionClass.Beta) { obj = obj.Where(i => !i.prerelease || i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase)).ToArray(); } else if (updateLevel == PackageVersionClass.Dev) { obj = obj.Where(i => !i.prerelease || i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase) || i.name.EndsWith("-dev", StringComparison.OrdinalIgnoreCase)).ToArray(); } var availableUpdate = obj .Select(i => CheckForUpdateResult(i, minVersion, assetFilename, packageName, targetFilename)) .Where(i => i != null) .OrderByDescending(i => Version.Parse(i.AvailableVersion)) .FirstOrDefault(); return availableUpdate ?? new CheckForUpdateResult { IsUpdateAvailable = false }; }