Esempio n. 1
0
        private void RunWithProjects(CommandTarget target, bool dumpMode)
        {
            log.InfoFormat("Building...");

            var context = buildContextFactory.CreateBuildContext();

            var projects = target.Projects.ToList();

            IBuilder rootBuilder = projectBuilders.Select(pb => pb.AddToContext(context, projects))
                                      .Where(b => b != null).ToArray().Merge();
            rootBuilder.AddToContext(context);

            if (dumpMode)
            {
                using (var builderGraph = targetRoot.CreateBinaryFile("builders.dot"))
                    context.Dump(builderGraph, rootBuilder);
            }
            else
            {
                context.Run(rootBuilder);

                var outputs = context.GetResults(rootBuilder);
                foreach (var outputPath in outputs)
                    log.DebugFormat("Generated output for build: {0}", outputPath);

                var productTarget = target as ProductTarget;
                if (productTarget != null)
                {
                    MergeOutputForProduct(productTarget.Product, outputs);
                }
            }
            
            output.Message("Build completed.");
        }
Esempio n. 2
0
 private void Run(CommandTarget target, bool openSolution)
 {
     Run(target.Projects.Concat(target.TestProjects), openSolution);
 }
Esempio n. 3
0
        private void RunWithProjects(CommandTarget target, bool dumpMode, bool dumpDepsMode)
        {
            log.InfoFormat("Building...");

            var context = buildContextFactory.CreateBuildContext();

            var projects = target.Projects.ToList();

            IBuilder rootBuilder = coreBuilderFactory.Merge(
                projectBuilders
                    .Select(pb => pb.Create(projects))
                    .Where(b => b != null).ToArray(),
                new ProjectBuilderTag("Top level project builders", projects));

            if (rootBuilder != null)
            {
                context.AddBuilder(rootBuilder);

                var productTarget = target as ProductTarget;
                if (productTarget != null)
                {
                    rootBuilder = AddProductBuildStep(context, productTarget.Product, rootBuilder);
                }

                if (dumpMode)
                {
                    context.Dump(name => targetRoot.CreateBinaryFile("builders." + name + ".dot"), rootBuilder);
                }
                else if (dumpDepsMode)
                {
                    context.DumpDependencies(rootBuilder, output);
                }
                else
                {
                    var result = context.Run(rootBuilder);

                    if (result.Count > 0)
                    {
                        var outputs = context.GetResults(rootBuilder);
                        foreach (var outputPath in outputs)
                            log.DebugFormat("Generated output for build: {0}", outputPath);
                    }
                    else
                    {
                        log.Warn("Build produced no results");
                    }
                }
            }

            output.Message("Build completed.");
        }