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

AddProductBuildStep() private method

private AddProductBuildStep ( IBuildContext context, Product product, IBuilder rootBuilder ) : IBuilder
context IBuildContext
product Product
rootBuilder IBuilder
return IBuilder
        private IBuilder AddProductBuildStep(IBuildContext context, Product product, IBuilder rootBuilder)
        {
            var productOutput = targetRoot.GetChildDirectory(product.Name, createIfMissing: true);

            var copyResultsStep = coreBuilderFactory.CreateCopyResultBuilder(rootBuilder, productOutput);
            context.AddBuilder(copyResultsStep);

            var resultBuilders = new List<IPostProcessor>();

            if (product.PostProcessors.Any())
            {
                var factories = postProcessorFactories.ToList();

                foreach (var pp in product.PostProcessors)
                {
                    var postProcessor = factories
                            .Select(f => f.CreatePostProcessorFor(product, pp, new[] { copyResultsStep }))
                            .FirstOrDefault(p => p != null);
                    if (postProcessor != null)
                    {
                        resultBuilders.Add(postProcessor);
                    }
                }
            }

            if (resultBuilders.Any())
            {
                var merger = coreBuilderFactory.CreateMergingBuilder(resultBuilders, new DescriptionTag(String.Format("Product {0}'s result builders", product.Name)));
                context.AddBuilder(merger);
                return merger;
            }
            else
            {
                return copyResultsStep;
            }
        }