/// <summary> /// Get latest JObject for package identity /// </summary> /// <param name="repo"></param> /// <param name="identity"></param> /// <param name="allowPrerelease"></param> /// <returns></returns> public static List <JObject> GetLastestJObjectsForPackage(SourceRepository repo, JObject jObject, VsProject project, bool allowPrerelease, int skip, int take, bool takeAllVersions) { List <JObject> jObjects = new List <JObject>(); string id = jObject.Value <string>(Properties.PackageId); string version = jObject.Value <string>(Properties.Version); NuGetVersion nVersion = GetNuGetVersionFromString(version); if (!takeAllVersions) { string latestVersion = GetLastestVersionForPackage(repo, id, project.GetSupportedFrameworks(), allowPrerelease, nVersion, false); if (latestVersion != null) { NuGetVersion laVersion = GetNuGetVersionFromString(latestVersion); if (laVersion > nVersion) { Task <JObject> task = repo.GetPackageMetadata(id, laVersion); JObject latestJObject = task.Result; jObjects.Add(latestJObject); } } } else { JObject package = GetJObjectForPackageId(repo, id, project.GetSupportedFrameworks(), allowPrerelease, skip, take); IEnumerable <NuGetVersion> versionList = GetAllVersionsForPackageId(package).OrderByDescending(v => v); // Work around a bug in repo.Search(), where prerelease versions are not filtered out. if (!allowPrerelease) { versionList = versionList.Where(p => p > nVersion && p.IsPrerelease == false); } else { versionList = versionList.Where(p => p > nVersion); } foreach (NuGetVersion updateVersion in versionList) { JObject updateObject = GetPackageByIdAndVersion(repo, id, updateVersion.ToNormalizedString(), allowPrerelease); jObjects.Add(updateObject); } } return(jObjects); }
/// <summary> /// Get latest JObject for package identity /// </summary> /// <param name="repo"></param> /// <param name="identity"></param> /// <param name="allowPrerelease"></param> /// <returns></returns> public static List<JObject> GetLastestJObjectsForPackage(SourceRepository repo, JObject jObject, VsProject project, bool allowPrerelease, int skip, int take, bool takeAllVersions) { List<JObject> jObjects = new List<JObject>(); string id = jObject.Value<string>(Properties.PackageId); string version = jObject.Value<string>(Properties.Version); NuGetVersion nVersion = GetNuGetVersionFromString(version); if (!takeAllVersions) { string latestVersion = GetLastestVersionForPackage(repo, id, project.GetSupportedFrameworks(), allowPrerelease, nVersion, false); if (latestVersion != null) { NuGetVersion laVersion = GetNuGetVersionFromString(latestVersion); if (laVersion > nVersion) { Task<JObject> task = repo.GetPackageMetadata(id, laVersion); JObject latestJObject = task.Result; jObjects.Add(latestJObject); } } } else { JObject package = GetJObjectForPackageId(repo, id, project.GetSupportedFrameworks(), allowPrerelease, skip, take); IEnumerable<NuGetVersion> versionList = GetAllVersionsForPackageId(package).OrderByDescending(v => v); // Work around a bug in repo.Search(), where prerelease versions are not filtered out. if (!allowPrerelease) { versionList = versionList.Where(p => p > nVersion && p.IsPrerelease == false); } else { versionList = versionList.Where(p => p > nVersion); } foreach (NuGetVersion updateVersion in versionList) { JObject updateObject = GetPackageByIdAndVersion(repo, id, updateVersion.ToNormalizedString(), allowPrerelease); jObjects.Add(updateObject); } } return jObjects; }
/// <summary> /// Get latest update for package identity /// </summary> /// <param name="repo"></param> /// <param name="identity"></param> /// <param name="allowPrerelease"></param> /// <returns></returns> public static PackageIdentity GetLastestUpdateForPackage(SourceRepository repo, PackageIdentity identity, VsProject project, bool allowPrerelease, bool isSafe) { string latestVersion = GetLastestVersionForPackage(repo, identity.Id, project.GetSupportedFrameworks(), allowPrerelease, identity.Version, isSafe); PackageIdentity latestIdentity = null; if (latestVersion != null) { latestIdentity = new PackageIdentity(identity.Id, NuGetVersion.Parse(latestVersion)); } return latestIdentity; }
/// <summary> /// Get latest update for package identity /// </summary> /// <param name="repo"></param> /// <param name="identity"></param> /// <param name="allowPrerelease"></param> /// <returns></returns> public static PackageIdentity GetLastestUpdateForPackage(SourceRepository repo, PackageIdentity identity, VsProject project, bool allowPrerelease, bool isSafe) { string latestVersion = GetLastestVersionForPackage(repo, identity.Id, project.GetSupportedFrameworks(), allowPrerelease, identity.Version, isSafe); PackageIdentity latestIdentity = null; if (latestVersion != null) { latestIdentity = new PackageIdentity(identity.Id, NuGetVersion.Parse(latestVersion)); } return(latestIdentity); }