Beispiel #1
0
        public static void RegisterInitTask(IBootstrapTask task)
        {
            if (_tasks == null)
                _tasks = new List<object>();

            _tasks.Add(task);
        }
Beispiel #2
0
 public virtual void Register(IBootstrapTask task)
 {
     if (task != null)
     {
         Tasks.Add(task);
     }
 }
 private void ProcessExports(BootstrapTaskDescriptor descriptor, IBootstrapTask task)
 {
     foreach (IDependencyExportDescriptor exportDescriptor in descriptor.Exports)
     {
         context.DependencyExporter.Export(exportDescriptor, exportDescriptor.GetValue(task));
     }
 }
Beispiel #4
0
        public string GenerateTask(IBootstrapTask bootstrapTask)
        {
            StringBuilder taskString = new StringBuilder();

            taskString.AppendLine("<UsingTask");
            taskString.AppendLine("\tTaskName=\"BootstrapMsBuildByConvention\"");
            taskString.AppendLine("\tTaskFactory=\"CodeTaskFactory\"");
            taskString.AppendLine("\tAssemblyFile=\"$(MSBuildToolsPath)\\Microsoft.Build.Tasks.v4.0.dll\">");
            taskString.AppendLine("\t<ParameterGroup>");

            if (bootstrapTask.TaskParameters != null)
            {
                foreach (TaskParameter taskParameter in bootstrapTask.TaskParameters)
                {
                    taskString.AppendFormat(
                        "\t\t<{0} ParameterType=\"{1}\" Output=\"{2}\"></{0}>\n", taskParameter.Name, taskParameter.Type, taskParameter.IsOutput.ToString().ToLowerInvariant());
                }
            }


            taskString.AppendLine("\t</ParameterGroup>");
            taskString.AppendLine("\t<Task>");

            List <string> usings = bootstrapTask.GenerateUsings();
            string        code   = bootstrapTask.GenerateCSharpCode();

            this.AddUsings(taskString, usings);
            this.AddCode(taskString, code);
            taskString.AppendLine("\t</Task>");
            taskString.AppendLine("</UsingTask>");
            return(taskString.ToString());
        }
Beispiel #5
0
        public void Initialize()
        {
            IBootstrapTask task = factory();

            if (task != null)
            {
                task.Initialize();
            }
        }
        public void Register(IBootstrapTask task)
        {
            Ensure.NotNull(task, "task");
            BootstrapTaskDescriptor descriptor = new BootstrapTaskDescriptor(task.GetType());

            descriptor.Imports.AddRange(context.DescriptorProvider.GetImports(descriptor.Type));
            descriptor.Exports.AddRange(context.DescriptorProvider.GetExports(descriptor.Type));
            descriptor.Instance = task;
            descriptors.Add(descriptor);
        }
Beispiel #7
0
        public void GenerateTaskShouldReturnValidMsBuildStatement()
        {
            //Arrange
            string projectXmlString =
                "<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\" ToolsVersion=\"4.0\">\n{0}\n</Project>";

            this._bootstrapTask = new BootstrapTask();

            //Act
            string project = string.Format(projectXmlString, this._taskCodeGenerator.GenerateTask(this._bootstrapTask));

            //Assert
            Assert.That(() => new Project(new XmlTextReader(new StringReader(project))), Throws.Nothing);
        }
Beispiel #8
0
        public void GenerateTaskShouldCallIBootstrapTask()
        {
            //Arrange
            IBootstrapTask bootstrapTask = MockRepository.GenerateStrictMock <IBootstrapTask>();

            bootstrapTask.Expect(obj => obj.TaskParameters).Return(null);
            bootstrapTask.Expect(obj => obj.GenerateUsings()).Return(new List <string> {
                "System"
            });
            bootstrapTask.Expect(obj => obj.GenerateCSharpCode())
            .Return("Console.WriteLine(string.Join(\" \", Environment.GetCommandLineArgs()));");

            //Act
            this._taskCodeGenerator.GenerateTask(bootstrapTask);

            //Assert
            bootstrapTask.VerifyAllExpectations();
        }
Beispiel #9
0
        public override void Initialize()
        {
            if (types == null)
            {
                types = FindTypes();
            }

            foreach (Type type in types)
            {
                IBootstrapTask instance = CreateInstance(type);
                if (AreConstraintsSatisfied(instance))
                {
                    Tasks.Add(instance);
                }
            }

            foreach (IBootstrapTask task in Tasks)
            {
                task.Initialize();
            }
        }
        /// <summary>
        /// Evaluates all constraints in <paramref name="constraints"/>.
        /// If any constraint will not satisfies, returns <c>false</c>; if all satisfies, returns <c>true</c>.
        /// </summary>
        /// <param name="constraints">Constraints to evaluate.</param>
        /// <param name="bootstrapTask">Task, where <paramref name="constraints"/> was defined.</param>
        /// <param name="context">Context of evaluation.</param>
        /// <returns>If any constraint will not satisfies, returns <c>false</c>; if all satisfies, returns <c>true</c>.</returns>
        public static bool IsSatisfied(this IEnumerable <IBootstrapConstraint> constraints, IBootstrapTask bootstrapTask, IBootstrapConstraintContext context)
        {
            foreach (IBootstrapConstraint constraint in constraints)
            {
                if (!constraint.IsSatisfied(bootstrapTask, context))
                {
                    return(false);
                }
            }

            return(true);
        }
 public void SetUp()
 {
     this._bootstrapTask = new BootstrapTask();
 }
Beispiel #12
0
 public void SetUp()
 {
     this._bootstrapTask     = MockRepository.GenerateStub <IBootstrapTask>();
     this._taskCodeGenerator = new BootstrapTaskCodeGenerator();
 }
 protected virtual void InitializeTask(IBootstrapTask task)
 {
     task.Initialize();
 }
        protected bool AreConstraintsSatisfied(IBootstrapTask task)
        {
            IBootstrapConstraintContext context = new DefaultBootstrapConstraintContext(this);

            return(provider.GetConstraints(task.GetType()).IsSatisfied(task, context));
        }
 public object GetValue(IBootstrapTask task)
 {
     return(TargetProperty.GetValue(task));
 }
 public bool IsSatisfied(IBootstrapTask task, IBootstrapConstraintContext context)
 {
     return(!(context.Bootstrapper is AutomaticBootstrapper));
 }
Beispiel #17
0
 public void SetValue(IBootstrapTask task, object dependency)
 {
     TargetProperty.SetValue(task, dependency);
 }