Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }