6ff7404a48
A tool which searches recursively for project.json files, runs a set of analyses and reports on the result. For CLI we have only one rule currently, that Dependencies between projects must be equivalent to avoid stomping.
41 lines
1.2 KiB
C#
41 lines
1.2 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.DotNet.ProjectModel;
|
|
|
|
namespace MultiProjectValidator
|
|
{
|
|
public class ProjectLoader
|
|
{
|
|
private static readonly string PROJECT_FILENAME = "project.json";
|
|
|
|
public static List<ProjectContext> Load(string rootPath, bool recursive=true)
|
|
{
|
|
var projectFiles = DiscoverProjectFiles(rootPath);
|
|
var projectContextList = LoadProjectContexts(projectFiles);
|
|
|
|
return projectContextList;
|
|
}
|
|
|
|
private static string[] DiscoverProjectFiles(string rootPath)
|
|
{
|
|
return Directory.GetFiles(rootPath, PROJECT_FILENAME, SearchOption.AllDirectories);
|
|
}
|
|
|
|
private static List<ProjectContext> LoadProjectContexts(string[] projectFiles)
|
|
{
|
|
var projectContexts = new List<ProjectContext>();
|
|
|
|
foreach (var file in projectFiles)
|
|
{
|
|
var fileTargetContexts = ProjectContext.CreateContextForEachTarget(file);
|
|
|
|
projectContexts.AddRange(fileTargetContexts);
|
|
}
|
|
|
|
return projectContexts;
|
|
}
|
|
}
|
|
}
|