public static CakeGraph Build(IReadOnlyCollection <ICakeTaskInfo> tasks) { var graph = new CakeGraph(); foreach (var task in tasks) { graph.Add(task.Name); } foreach (var task in tasks) { foreach (var dependency in task.Dependencies) { if (!graph.Exist(dependency.Name)) { if (dependency.Required) { const string format = "Task '{0}' is dependent on task '{1}' which does not exist."; var message = string.Format(CultureInfo.InvariantCulture, format, task.Name, dependency.Name); throw new CakeException(message); } } else { graph.Connect(dependency.Name, task.Name); } } foreach (var dependency in task.Dependees) { if (!graph.Exist(dependency.Name)) { if (dependency.Required) { const string format = "Task '{0}' has specified that it's a dependency for task '{1}' which does not exist."; var message = string.Format(CultureInfo.InvariantCulture, format, task.Name, dependency.Name); throw new CakeException(message); } } else { graph.Connect(task.Name, dependency.Name); } } } return(graph); }
public static CakeGraph Build(List <CakeTask> tasks) { var graph = new CakeGraph(); foreach (var task in tasks) { graph.Add(task.Name); } foreach (var task in tasks) { foreach (var dependency in task.Dependencies) { if (!graph.Exist(dependency)) { const string format = "Task '{0}' is dependent on task '{1}' which do not exist."; var message = string.Format(CultureInfo.InvariantCulture, format, task.Name, dependency); throw new CakeException(message); } graph.Connect(dependency, task.Name); } } return(graph); }