protected virtual TeamCityProject GetProject( NukeBuild build, IReadOnlyCollection <ExecutableTarget> executableTargets) { var relevantTargets = VcsTriggeredTargets.Concat(ManuallyTriggeredTargets) .SelectMany(x => ExecutionPlanner.GetExecutionPlan(executableTargets, new[] { x })) .Distinct() .Where(x => !ExcludedTargets.Contains(x.Name) && !NonEntryTargets.Contains(x.Name)).ToList(); var vcsRoot = GetVcsRoot(build); var lookupTable = new LookupTable <ExecutableTarget, TeamCityBuildType>(); var buildTypes = relevantTargets .SelectMany(x => GetBuildTypes(build, x, vcsRoot, lookupTable), (x, y) => (ExecutableTarget: x, BuildType: y)) .ForEachLazy(x => lookupTable.Add(x.ExecutableTarget, x.BuildType)) .Select(x => x.BuildType).ToArray(); var parameters = GetGlobalParameters(build); if (Platform == TeamCityAgentPlatform.Windows) { parameters = parameters .Concat(new TeamCityKeyValueParameter { Key = "teamcity.runner.commandline.stdstreams.encoding", Value = "IBM-437" }); } return(new TeamCityProject { VcsRoot = vcsRoot, BuildTypes = buildTypes, Parameters = parameters.ToArray() }); }
protected override void Generate(NukeBuild build, IReadOnlyCollection <ExecutableTarget> executableTargets) { var relevantTargets = VcsTriggeredTargets.Concat(ManuallyTriggeredTargets) .SelectMany(x => ExecutionPlanner.GetExecutionPlan(executableTargets, new[] { x })) .Distinct() .Where(x => !ExcludedTargets.Contains(x.Name) && !NonEntryTargets.Contains(x.Name)).ToList(); var configuration = GetConfiguration(build, relevantTargets); ControlFlow.Assert(NukeBuild.RootDirectory != null, "NukeBuild.RootDirectory != null"); TextTasks.WriteAllLines( PomFile, ResourceUtility.GetResourceAllLines <TeamCityConfigurationEntity>("pom.xml")); using var writer = new CustomFileWriter(SettingsFile, indentationFactor: 4); configuration.Write(writer); }