private static void NotifyProjects()
{
Console.Write("Building references graph... ");
Dictionary<string, string> servers;
var graph = BuildReferencesGraph(out servers);
Console.WriteLine("OK");
Console.Write("Removing unnecessary edges... ");
var cleared = graph.Clone();
GraphHelper.RemoveExplicitEdges(cleared);
Console.WriteLine("OK");
IEnumerable<Edge<string>> outEdges;
var projectsToReport = new List<string>();
if (graph.TryGetOutEdges(Args.ProjectName, out outEdges))
{
projectsToReport.AddRange(outEdges.Select(edge => edge.Target));
}
foreach (var project in projectsToReport.OrderBy(i => i))
{
Execute.ReportUsage(project, servers[project]);
}
var projectsToNotify = new List<string>();
if (cleared.TryGetOutEdges(Args.ProjectName, out outEdges))
{
projectsToNotify.AddRange(outEdges.Select(edge => edge.Target));
}
Console.WriteLine("Notifying dependant projects...");
foreach (var project in projectsToNotify)
{
NotifyProject(project, servers[project]);
}
}