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."); }
private void Run(CommandTarget target, bool openSolution) { Run(target.Projects.Concat(target.TestProjects), openSolution); }
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."); }