Beispiel #1
0
        public IBuilder Create(IEnumerable <Project> projects)
        {
            var builders = new List <IBuilder>();
            var prjs     = projects.ToList();

            foreach (var project in prjs)
            {
                foreach (var sourceSet in project.SourceSets)
                {
                    if (buildScriptMappings.HasBuildScriptFor(sourceSet))
                    {
                        var buildScript = buildScriptMappings.GetBuildScriptFor(sourceSet);
                        builders.Add(builderFactory.CreatePythnoScriptedBuilder(project, buildScript));
                    }
                }
            }

            return(coreBuilderFactory.Merge(builders.ToArray(), new ProjectBuilderTag(String.Format("Python scripted builders of {0}", String.Join(", ", prjs.Select(p => p.Name))), prjs)));
        }
        /// <summary>
        /// Adds the builders (<see cref="IBuilder"/>) to the given build context which process
        /// the given set of projects (<see cref="Project"/>)
        /// </summary>
        /// <param name="context">Current build context</param>
        /// <param name="projects">Projects to be built</param>
        public IBuilder AddToContext(IBuildContext context, IEnumerable <Project> projects)
        {
            var builders = new List <IBuilder>();

            foreach (var project in projects)
            {
                foreach (var sourceSet in project.SourceSets)
                {
                    if (buildScriptMappings.HasBuildScriptFor(sourceSet))
                    {
                        var buildScript = buildScriptMappings.GetBuildScriptFor(sourceSet);
                        builders.Add(new PythonScriptedBuilder(project, buildScript, fingerprintFactory, scriptRunner));
                    }
                }
            }

            var merged = builders.ToArray().Merge();

            if (merged != null)
            {
                merged.AddToContext(context);
            }
            return(merged);
        }