private static AdjacencyGraph<string, Edge<string>> BuildReferencesGraph(out Dictionary<string, string> servers)
{
servers = new Dictionary<string, string>();
var graph = new AdjacencyGraph<string, Edge<string>>();
foreach (var serverName in Args.ServerNames.Split('|'))
{
var projectsPath = Paths.ProjectsFolder(serverName);
foreach (var projectFolder in Directory.GetDirectories(projectsPath))
{
var projectName = Path.GetFileName(projectFolder);
var referencesFolder = Path.Combine(projectFolder, Args.ReferencesFolder);
servers.Add(projectName, serverName);
if (!Directory.Exists(referencesFolder))
continue;
var referenceFiles = Directory.GetFiles(referencesFolder).Select(Path.GetFileNameWithoutExtension);
graph.AddVerticesAndEdgeRange(referenceFiles.Select(referenceName => new Edge<string>(referenceName, projectName)));
}
}
return graph;
}