Code cleanup

This commit is contained in:
Nate McMaster 2017-09-18 11:15:45 -07:00
parent a10ba83751
commit 51dbdbeac2
2 changed files with 30 additions and 19 deletions

View File

@ -99,10 +99,10 @@ namespace RepoTasks
var inconsistentVersions = new List<VersionMismatch>(); var inconsistentVersions = new List<VersionMismatch>();
var reposThatShouldPatch = new HashSet<string>(); var reposThatShouldPatch = new HashSet<string>();
// holy crap, o^4 // TODO cleanup the 4-deep nested loops
foreach (var sln in solutions) foreach (var solution in solutions)
foreach (var proj in sln.Projects) foreach (var project in solution.Projects)
foreach (var tfm in proj.Frameworks) foreach (var tfm in project.Frameworks)
foreach (var dependency in tfm.Dependencies) foreach (var dependency in tfm.Dependencies)
{ {
if (!buildPackageMap.TryGetValue(dependency.Key, out var package)) if (!buildPackageMap.TryGetValue(dependency.Key, out var package))
@ -113,20 +113,24 @@ namespace RepoTasks
var refVersion = VersionRange.Parse(dependency.Value.Version); var refVersion = VersionRange.Parse(dependency.Value.Version);
if (refVersion.IsFloating && refVersion.Float.Satisfies(package.PackageInfo.Version)) if (refVersion.IsFloating && refVersion.Float.Satisfies(package.PackageInfo.Version))
continue;
else if (package.PackageInfo.Version.Equals(refVersion))
continue;
if (!sln.ShouldBuild)
{ {
if (!shippedPackageMap.TryGetValue(proj.PackageId, out _)) continue;
}
else if (package.PackageInfo.Version.Equals(refVersion))
{
continue;
}
if (!solution.ShouldBuild)
{
if (!shippedPackageMap.TryGetValue(project.PackageId, out _))
{ {
Log.LogMessage(MessageImportance.Normal, $"Detected inconsistent in a sample or test project {proj.FullPath}"); Log.LogMessage(MessageImportance.Normal, $"Detected inconsistent in a sample or test project {project.FullPath}");
continue; continue;
} }
else else
{ {
reposThatShouldPatch.Add(Path.GetFileName(Path.GetDirectoryName(sln.FullPath))); reposThatShouldPatch.Add(Path.GetFileName(Path.GetDirectoryName(solution.FullPath)));
} }
} }
@ -145,15 +149,15 @@ namespace RepoTasks
var sb = new StringBuilder(); var sb = new StringBuilder();
sb.AppendLine(); sb.AppendLine();
sb.AppendLine($"Repos are inconsistent. The following projects have PackageReferences that should be updated"); sb.AppendLine($"Repos are inconsistent. The following projects have PackageReferences that should be updated");
foreach (var sln in inconsistentVersions.GroupBy(p => p.Solution.FullPath)) foreach (var solution in inconsistentVersions.GroupBy(p => p.Solution.FullPath))
{ {
sb.Append(" - ").AppendLine(Path.GetFileName(sln.Key)); sb.Append(" - ").AppendLine(Path.GetFileName(solution.Key));
foreach (var proj in sln.GroupBy(p => p.Project.FullPath)) foreach (var project in solution.GroupBy(p => p.Project.FullPath))
{ {
sb.Append(" - ").AppendLine(Path.GetFileName(proj.Key)); sb.Append(" - ").AppendLine(Path.GetFileName(project.Key));
foreach (var m in proj) foreach (var mismatchedReference in project)
{ {
sb.AppendLine($" + {m.PackageId}/{{{m.ActualVersion} => {m.ExpectedVersion}}}"); sb.AppendLine($" + {mismatchedReference.PackageId}/{{{mismatchedReference.ActualVersion} => {mismatchedReference.ExpectedVersion}}}");
} }
} }
} }
@ -173,7 +177,11 @@ namespace RepoTasks
var repositories = solutions.Select(s => var repositories = solutions.Select(s =>
{ {
var repoName = Path.GetFileName(Path.GetDirectoryName(s.FullPath)); var repoName = Path.GetFileName(Path.GetDirectoryName(s.FullPath));
var repo = new Repository(repoName); var repo = new Repository(repoName)
{
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)).ToList();
foreach (var proj in s.Projects) foreach (var proj in s.Projects)
@ -206,6 +214,7 @@ namespace RepoTasks
var order = TopologicalSort.GetOrder(graphNodeRepository); var order = TopologicalSort.GetOrder(graphNodeRepository);
var repositoryTaskItem = new TaskItem(repository.Name); var repositoryTaskItem = new TaskItem(repository.Name);
repositoryTaskItem.SetMetadata("Order", order.ToString()); repositoryTaskItem.SetMetadata("Order", order.ToString());
repositoryTaskItem.SetMetadata("RepositoryPath", repository.RootDir);
repositoriesWithOrder.Add((repositoryTaskItem, order)); repositoriesWithOrder.Add((repositoryTaskItem, order));
} }

View File

@ -22,6 +22,8 @@ namespace RepoTools.BuildGraph
public string Name { get; private set; } public string Name { get; private set; }
public string RootDir { get; set; }
public IList<Project> Projects { get; } = new List<Project>(); public IList<Project> Projects { get; } = new List<Project>();
public IList<Project> SupportProjects { get; } = new List<Project>(); public IList<Project> SupportProjects { get; } = new List<Project>();