public ITaskBuilder Intern <TTask>(string name = null) where TTask : class, IBauTask, new() { name = name ?? DefaultTask; if (string.IsNullOrWhiteSpace(name)) { BauConsole.WriteInvalidTaskName(name); var message = string.Format(CultureInfo.InvariantCulture, "Invalid task name '{0}'.", name); throw new ArgumentException(message, "name"); } IBauTask task; if (!this.tasks.TryGetValue(name, out task)) { this.tasks.Add(name, task = new TTask()); } var typedTask = task as TTask; if (typedTask == null) { BauConsole.WriteTasksAlreadyExists(name, task.GetType().Name); var message = string.Format( CultureInfo.InvariantCulture, "'{0}' task already exists with type '{1}'.", name, task.GetType().Name); throw new InvalidOperationException(message); } this.currentTask = typedTask; return(this); }
public ITaskBuilder DependsOn(params string[] otherTasks) { this.EnsureCurrentTask(); foreach (var task in otherTasks.Where(t => !this.currentTask.Dependencies.Contains(t))) { if (string.IsNullOrWhiteSpace(task)) { BauConsole.WriteInvalidTaskName(task); var message = string.Format(CultureInfo.InvariantCulture, "Invalid task name '{0}'.", task); throw new ArgumentException(message, "otherTasks"); } this.currentTask.Dependencies.Add(task); } return(this); }