Account for .Sources packages when computing the repo graph

This commit is contained in:
Nate McMaster 2017-11-09 14:08:13 -08:00
parent e19c552cd3
commit ee5178160e
2 changed files with 23 additions and 5 deletions

View File

@ -179,7 +179,7 @@
SourceName="Artifacts"
Condition="%(Repository.Build)"
SourceUri="$(BuildDir)" />
<UpdatePackageSource
NuGetConfigPath="%(Repository.RootPath)NuGet.config"
SourceName="MirroredArtifacts"

View File

@ -193,13 +193,25 @@ namespace RepoTasks
RootDir = Path.GetDirectoryName(s.FullPath)
};
var packages = artifacts.Where(a => a.RepoName.Equals(repoName, StringComparison.OrdinalIgnoreCase)).ToList();
var packages = artifacts
.Where(a => a.RepoName.Equals(repoName, StringComparison.OrdinalIgnoreCase))
.ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase);
foreach (var proj in s.Projects)
{
var projectGroup = packages.Any(p => p.PackageInfo.Id == proj.PackageId)
? repo.Projects
: repo.SupportProjects;
IList<Project> projectGroup;
if (packages.ContainsKey(proj.PackageId))
{
// this project is a package producer and consumer
packages.Remove(proj.PackageId);
projectGroup = repo.Projects;
}
else
{
// this project is a package consumer
projectGroup = repo.SupportProjects;
}
projectGroup.Add(new Project(proj.PackageId)
{
@ -211,6 +223,12 @@ namespace RepoTasks
});
}
foreach (var packageId in packages.Keys)
{
// these packages are produced from something besides a csproj. e.g. .Sources packages
repo.Projects.Add(new Project(packageId) { Repository = repo });
}
return repo;
}).ToList();