public BuildSolutionStep UpdatePackages()
        {
            var packageWithFrameworks = packages as PackageWithFramework[] ?? packages.ToArray();

            packageWithFrameworks =
                packageWithFrameworks
                .OrderBy(x => !previousVersions.ContainsKey(x.Id) || x.IsLatestVersion(previousVersions[x.Id]))
                .ToArray();

            var packageUpdateResults = new List <PackageUpdateResult>();

            foreach (var package in packageWithFrameworks)
            {
                var isLatestVersion = previousVersions.ContainsKey(package.Id) && package.IsLatestVersion(previousVersions[package.Id]);

                if (isLatestVersion)
                {
                    continue;
                }

                package.IncrementAssemblyInfo(buildAndRevision);
            }

            IReadOnlyDictionary <string, Func <Version> > packagesVersion =
                packageWithFrameworks
                .ToDictionary(k => k.Id, v => (Func <Version>)(() => v.Version));

            foreach (var package in packageWithFrameworks)
            {
                var nugetDependecies = package.TryUpdateNuspecDependencies(packagesVersion).ToArray();

                var isLatestVersion = previousVersions.ContainsKey(package.Id) && package.IsLatestVersion(previousVersions[package.Id]);

                if (!nugetDependecies.Any() && isLatestVersion)
                {
                    continue;
                }

                package.UpdateNuspecVersion();

                var updateDataResult = new PackageUpdateDataResult(
                    package.Version,
                    nugetDependecies,
                    package.FrameworkPackages);

                var packageUpdate = new PackageUpdateResult(package.Id, updateDataResult);

                packageUpdateResults.Add(packageUpdate);
            }

            return(new BuildSolutionStep(buildAndRevision, solutionSystemInfo, new NugetPackageResultCollection(packageUpdateResults)));
        }
Exemple #2
0
 public PackageUpdateResult(string id, PackageUpdateDataResult data)
 {
     Id   = id;
     Data = data;
 }