Skip to content

Commit f75f794

Browse files
committed
Scarse checkout: clean up, deprecation.
1 parent eac0497 commit f75f794

9 files changed

Lines changed: 54 additions & 31 deletions

File tree

src/PostSharp.Engineering.BuildTools/ContinuousIntegration/Model/AdditionalCiBuildConfiguration.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// Copyright (c) SharpCrafters s.r.o. See the LICENSE.md file in the root directory of this repository root for details.
22

3+
using JetBrains.Annotations;
34
using PostSharp.Engineering.BuildTools.ContinuousIntegration.TeamCity;
45
using PostSharp.Engineering.BuildTools.ContinuousIntegration.TeamCity.Generation;
56

67
namespace PostSharp.Engineering.BuildTools.ContinuousIntegration.Model;
78

9+
[PublicAPI]
810
public abstract class AdditionalCiBuildConfiguration
911
{
1012
public string Name { get; }
@@ -25,11 +27,4 @@ protected AdditionalCiBuildConfiguration( string id, string name, string branch
2527
}
2628

2729
internal abstract TeamCityBuildConfiguration TeamCityBuildConfiguration( ProductProperties productProperties );
28-
}
29-
30-
public enum SourceDependenciesRequirements
31-
{
32-
None,
33-
Full,
34-
EngOnly
3530
}

src/PostSharp.Engineering.BuildTools/ContinuousIntegration/Model/PowershellAdditionalCiBuildConfiguration.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ internal override TeamCityBuildConfiguration TeamCityBuildConfiguration( Product
4545
SourceDependencies = this.SourceDependenciesRequirements switch
4646
{
4747
SourceDependenciesRequirements.None => [],
48+
#pragma warning disable CS0618 // Type or member is obsolete
4849
SourceDependenciesRequirements.EngOnly => productProperties.EngOnlySourceDependencies,
50+
#pragma warning restore CS0618 // Type or member is obsolete
4951
SourceDependenciesRequirements.Full => productProperties.SourceDependencies,
5052
_ => throw new ArgumentOutOfRangeException()
5153
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright (c) SharpCrafters s.r.o. See the LICENSE.md file in the root directory of this repository root for details.
2+
3+
using System;
4+
5+
namespace PostSharp.Engineering.BuildTools.ContinuousIntegration.Model;
6+
7+
public enum SourceDependenciesRequirements
8+
{
9+
None,
10+
Full,
11+
12+
[Obsolete( "This does not work (not compatible with agent-side checkout)." )]
13+
EngOnly
14+
}

src/PostSharp.Engineering.BuildTools/ContinuousIntegration/TeamCity/Generation/ProductProperties.cs

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ internal class ProductProperties
3232

3333
public TeamCitySourceDependency[] SourceDependencies { get; }
3434

35-
public TeamCitySourceDependency[] EngOnlySourceDependencies { get; set; }
35+
public TeamCitySourceDependency[] EngOnlySourceDependencies { get; }
3636

3737
public ProductProperties( Product product )
3838
{
@@ -51,15 +51,24 @@ public ProductProperties( Product product )
5151
$"+:. => {product.SourceDependenciesDirectory}/{d.Name}" ) )
5252
.ToArray();
5353

54-
this.EngOnlySourceDependencies = product.SourceDependencies.Select( d => new TeamCitySourceDependency(
55-
d.CiConfiguration.ProjectId.ToString(),
56-
TeamCityHelper.GetVcsId( d ),
57-
true,
58-
$"""
59-
+:{product.DependencyDefinition.EngineeringDirectory} => {product.SourceDependenciesDirectory}/{d.Name}/{product.DependencyDefinition.EngineeringDirectory}
60-
+:DockerBuild.ps1 => {product.SourceDependenciesDirectory}/{d.Name}/DockerBuild.ps1
61-
+:Build.ps1 => {product.SourceDependenciesDirectory}/{d.Name}/Build.ps1
62-
""" ) )
54+
this.EngOnlySourceDependencies = product.SourceDependencies.Select( d =>
55+
{
56+
var checkoutRules = $"""
57+
+:{d.EngineeringDirectory} => {product.SourceDependenciesDirectory}/{d.Name}/{d.EngineeringDirectory}
58+
+:DockerBuild.ps1 => {product.SourceDependenciesDirectory}/{d.Name}/DockerBuild.ps1
59+
+:Build.ps1 => {product.SourceDependenciesDirectory}/{d.Name}/Build.ps1
60+
""" +
61+
Environment.NewLine +
62+
string.Join(
63+
Environment.NewLine,
64+
d.AdditionalEngineeringDirectories.Select( x => $"+{x} => {product.SourceDependenciesDirectory}/{d.Name}/{x}" ) );
65+
66+
return new TeamCitySourceDependency(
67+
d.CiConfiguration.ProjectId.ToString(),
68+
TeamCityHelper.GetVcsId( d ),
69+
true,
70+
checkoutRules );
71+
} )
6372
.ToArray();
6473
}
6574
}

src/PostSharp.Engineering.BuildTools/ContinuousIntegration/TeamCity/TeamCityBuildConfiguration.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ void AddBuildStep( BuildStep newStep )
161161
}
162162
}
163163

164-
writer.WriteLine( $@" }}" );
164+
writer.WriteLine( " checkoutMode = CheckoutMode.ON_AGENT" );
165+
writer.WriteLine( @" }" );
165166

166167
// Build steps.
167168
if ( allBuildSteps.Count > 0 )

src/PostSharp.Engineering.BuildTools/Dependencies/Definitions/MetalamaDependencies.V2025_1.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,12 @@ public MetalamaDependencyDefinition(
6868
MetalamaGitHubOrganization.Metalama )
6969
{
7070
EngineeringDirectory = "eng-Metalama",
71+
AdditionalEngineeringDirectories = ["eng"],
72+
7173
#pragma warning disable CS0618 // Type or member is obsolete
7274
ParametricPrivateArtifactsDirectory = Path.Combine( "artifacts", "packages", "$(MSBuildConfiguration)", "Shipping" ),
73-
Dependencies = [DevelopmentDependencies.PostSharpEngineering]
7475
#pragma warning restore CS0618 // Type or member is obsolete
76+
Dependencies = [DevelopmentDependencies.PostSharpEngineering]
7577
};
7678

7779
public static DependencyDefinition Metalama { get; } =
@@ -200,10 +202,7 @@ public MetalamaDependencyDefinition(
200202
MetalamaGitHubOrganization.Metalama,
201203
false,
202204
parentCiProjectId: $"Metalama_Metalama{Family.VersionWithoutDots}_MetalamaTests",
203-
vcsRootProjectId: $"Metalama_Metalama{Family.VersionWithoutDots}" )
204-
{
205-
Dependencies = [DevelopmentDependencies.PostSharpEngineering, Metalama]
206-
};
205+
vcsRootProjectId: $"Metalama_Metalama{Family.VersionWithoutDots}" ) { Dependencies = [DevelopmentDependencies.PostSharpEngineering, Metalama] };
207206

208207
public static DependencyDefinition MetalamaPerformance { get; } =
209208
new MetalamaDependencyDefinition(

src/PostSharp.Engineering.BuildTools/Dependencies/Definitions/MetalamaDependencies.V2025_2.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public MetalamaDependencyDefinition(
6767
MetalamaGitHubOrganization.Metalama )
6868
{
6969
EngineeringDirectory = "eng-Metalama",
70+
AdditionalEngineeringDirectories = ["eng"],
7071
#pragma warning disable CS0618 // Type or member is obsolete
7172
ParametricPrivateArtifactsDirectory = Path.Combine( "artifacts", "packages", "$(MSBuildConfiguration)", "Shipping" ),
7273
#pragma warning restore CS0618 // Type or member is obsolete
@@ -199,10 +200,7 @@ public MetalamaDependencyDefinition(
199200
MetalamaGitHubOrganization.Metalama,
200201
false,
201202
parentCiProjectId: $"Metalama_Metalama{Family.VersionWithoutDots}_MetalamaTests",
202-
vcsRootProjectId: $"Metalama_Metalama{Family.VersionWithoutDots}" )
203-
{
204-
Dependencies = [DevelopmentDependencies.PostSharpEngineering, Metalama]
205-
};
203+
vcsRootProjectId: $"Metalama_Metalama{Family.VersionWithoutDots}" ) { Dependencies = [DevelopmentDependencies.PostSharpEngineering, Metalama] };
206204

207205
public static DependencyDefinition MetalamaPerformance { get; } =
208206
new MetalamaDependencyDefinition(

src/PostSharp.Engineering.BuildTools/Dependencies/Definitions/MetalamaDependencies.V2026_0.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public MetalamaDependencyDefinition(
6969
MetalamaGitHubOrganization.Metalama )
7070
{
7171
EngineeringDirectory = "eng-Metalama",
72+
AdditionalEngineeringDirectories = ["eng"],
7273
#pragma warning disable CS0618 // Type or member is obsolete
7374
ParametricPrivateArtifactsDirectory = Path.Combine( "artifacts", "packages", "$(MSBuildConfiguration)", "Shipping" ),
7475
#pragma warning restore CS0618 // Type or member is obsolete
@@ -201,10 +202,7 @@ public MetalamaDependencyDefinition(
201202
MetalamaGitHubOrganization.Metalama,
202203
false,
203204
parentCiProjectId: $"Metalama_Metalama{Family.VersionWithoutDots}_MetalamaTests",
204-
vcsRootProjectId: $"Metalama_Metalama{Family.VersionWithoutDots}" )
205-
{
206-
Dependencies = [DevelopmentDependencies.PostSharpEngineering, Metalama]
207-
};
205+
vcsRootProjectId: $"Metalama_Metalama{Family.VersionWithoutDots}" ) { Dependencies = [DevelopmentDependencies.PostSharpEngineering, Metalama] };
208206

209207
public static DependencyDefinition MetalamaPerformance { get; } =
210208
new MetalamaDependencyDefinition(

src/PostSharp.Engineering.BuildTools/Dependencies/Model/DependencyDefinition.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using PostSharp.Engineering.BuildTools.Build;
55
using PostSharp.Engineering.BuildTools.Build.Model;
66
using PostSharp.Engineering.BuildTools.ContinuousIntegration;
7+
using PostSharp.Engineering.BuildTools.ContinuousIntegration.Model;
78
using System;
89
using System.Collections.Generic;
910
using System.Diagnostics.CodeAnalysis;
@@ -58,6 +59,12 @@ public class DependencyDefinition
5859

5960
public string EngineeringDirectory { get; init; } = "eng";
6061

62+
/// <summary>
63+
/// Gets or set the list of other directories (additionally to <see cref="EngineeringDirectory"/>) that should
64+
/// be checked out when <see cref="SourceDependenciesRequirements.EngOnly"/> is specified.
65+
/// </summary>
66+
public string[] AdditionalEngineeringDirectories { get; init; } = [];
67+
6168
public string CodeStyle { get; init; } = "Standard";
6269

6370
public VcsRepository VcsRepository { get; }

0 commit comments

Comments
 (0)