Skip to content

Commit c50e441

Browse files
committed
global.json generation: added version cleanup to support Metalama.Tests.DotNetSdk.
1 parent 4fc3bb7 commit c50e441

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

src/PostSharp.Engineering.BuildTools/Build/Files/GlobalJsonFile.cs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
using PostSharp.Engineering.BuildTools.Build.Model;
44
using PostSharp.Engineering.BuildTools.Utilities;
5+
using System;
56
using System.IO;
67

78
namespace PostSharp.Engineering.BuildTools.Build.Files;
@@ -11,6 +12,36 @@ namespace PostSharp.Engineering.BuildTools.Build.Files;
1112
/// </summary>
1213
internal static class GlobalJsonFile
1314
{
15+
/// <summary>
16+
/// Cleans a version string returned by dotnet-install.ps1.
17+
/// </summary>
18+
private static string? CleanSdkVersion( BuildContext context, string? input )
19+
{
20+
if ( input == null )
21+
{
22+
return null;
23+
}
24+
25+
var versionParts = input.Split( '-' );
26+
27+
var version = versionParts.Length > 1 && (
28+
29+
// On Linux, the dotnet-install.ps1 returns a version with "-servicing.<build>" suffix, but the SDK version is without it.
30+
versionParts[1].StartsWith( "servicing", StringComparison.Ordinal )
31+
32+
// On Linux, the dotnet-install.ps1 returns a version with "-rtm.<build>" suffix, but the SDK version is without it.
33+
|| versionParts[1].StartsWith( "rtm", StringComparison.Ordinal ))
34+
? versionParts[0]
35+
: input;
36+
37+
if ( version != input )
38+
{
39+
context.Console.WriteImportantMessage( $"Overriding version {input} to {version}." );
40+
}
41+
42+
return version;
43+
}
44+
1445
internal static bool TryWrite( BuildContext context, string? overrideSdkVersion = null )
1546
{
1647
var product = context.Product;
@@ -53,7 +84,7 @@ internal static bool TryWrite( BuildContext context, string? overrideSdkVersion
5384
{
5485
"//": "This file is generated by PostSharp.Engineering. Do not edit or add to git.",
5586
"sdk": {
56-
"version": "{{overrideSdkVersion ?? product.DotNetSdkVersion.Version}}",
87+
"version": "{{CleanSdkVersion( context, overrideSdkVersion ) ?? product.DotNetSdkVersion.Version}}",
5788
"rollForward": "{{rollForward}}",
5889
"allowPrerelease": {{product.DotNetSdkVersion.AllowPrerelease.ToString().ToLowerInvariant()}}
5990
},

0 commit comments

Comments
 (0)