Bari.Core.Commands.BuildCommand.RunWithProjects C# (CSharp) Method

RunWithProjects() private method

private RunWithProjects ( CommandTarget target, bool dumpMode, bool dumpDepsMode ) : void
target Bari.Core.Commands.Helper.CommandTarget
dumpMode bool
dumpDepsMode bool
return void
        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.");
        }