Skip to content

Commit 11022b0

Browse files
authored
Merge pull request #276 from AArnott/fix275
Add NuGet-semver v1 compatible version as ChocolateyPackageVersion
2 parents 4bf8600 + 4f42aed commit 11022b0

File tree

5 files changed

+31
-7
lines changed

5 files changed

+31
-7
lines changed

src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -945,16 +945,25 @@ private void AssertStandardProperties(VersionOptions versionOptions, BuildResult
945945
Assert.Equal(versionOptions.Version.Prerelease, buildResult.PrereleaseVersion);
946946
Assert.Equal(expectedBuildMetadata, buildResult.SemVerBuildSuffix);
947947

948-
// NuGet is now SemVer 2.0 and will pass additional build metadata if provided
949-
bool semVer2 = versionOptions?.NuGetPackageVersionOrDefault.SemVer == 2;
950-
string semVer1CommitPrefix = semVer2 ? string.Empty : "g";
951-
string pkgVersionSuffix = buildResult.PublicRelease ? string.Empty : $"-{semVer1CommitPrefix}{commitIdShort}";
952-
if (semVer2)
948+
string GetPkgVersionSuffix(bool useSemVer2)
953949
{
954-
pkgVersionSuffix += expectedBuildMetadataWithoutCommitId;
950+
string semVer1CommitPrefix = useSemVer2 ? string.Empty : "g";
951+
string pkgVersionSuffix = buildResult.PublicRelease ? string.Empty : $"-{semVer1CommitPrefix}{commitIdShort}";
952+
if (useSemVer2)
953+
{
954+
pkgVersionSuffix += expectedBuildMetadataWithoutCommitId;
955+
}
956+
957+
return pkgVersionSuffix;
955958
}
956959

957-
Assert.Equal($"{idAsVersion.Major}.{idAsVersion.Minor}.{idAsVersion.Build}{GetSemVerAppropriatePrereleaseTag(versionOptions)}{pkgVersionSuffix}", buildResult.NuGetPackageVersion);
960+
// NuGet is now SemVer 2.0 and will pass additional build metadata if provided
961+
string nugetPkgVersionSuffix = GetPkgVersionSuffix(useSemVer2: versionOptions?.NuGetPackageVersionOrDefault.SemVer == 2);
962+
Assert.Equal($"{idAsVersion.Major}.{idAsVersion.Minor}.{idAsVersion.Build}{GetSemVerAppropriatePrereleaseTag(versionOptions)}{nugetPkgVersionSuffix}", buildResult.NuGetPackageVersion);
963+
964+
// Chocolatey only supports SemVer 1.0
965+
string chocolateyPkgVersionSuffix = GetPkgVersionSuffix(useSemVer2: false);
966+
Assert.Equal($"{idAsVersion.Major}.{idAsVersion.Minor}.{idAsVersion.Build}{GetSemVerAppropriatePrereleaseTag(versionOptions)}{chocolateyPkgVersionSuffix}", buildResult.ChocolateyPackageVersion);
958967

959968
var buildNumberOptions = versionOptions.CloudBuildOrDefault.BuildNumberOrDefault;
960969
if (buildNumberOptions.EnabledOrDefault)
@@ -1137,6 +1146,7 @@ internal BuildResults(BuildResult buildResult, IReadOnlyList<BuildEventArgs> log
11371146
public string AssemblyFileVersion => this.BuildResult.ProjectStateAfterBuild.GetPropertyValue("AssemblyFileVersion");
11381147
public string AssemblyVersion => this.BuildResult.ProjectStateAfterBuild.GetPropertyValue("AssemblyVersion");
11391148
public string NuGetPackageVersion => this.BuildResult.ProjectStateAfterBuild.GetPropertyValue("NuGetPackageVersion");
1149+
public string ChocolateyPackageVersion => this.BuildResult.ProjectStateAfterBuild.GetPropertyValue("ChocolateyPackageVersion");
11401150
public string CloudBuildNumber => this.BuildResult.ProjectStateAfterBuild.GetPropertyValue("CloudBuildNumber");
11411151
public string AssemblyName => this.BuildResult.ProjectStateAfterBuild.GetPropertyValue("AssemblyName");
11421152
public string AssemblyTitle => this.BuildResult.ProjectStateAfterBuild.GetPropertyValue("AssemblyTitle");

src/NerdBank.GitVersioning.Tests/VersionOracleTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ public void SemVerStableNonPublicVersion()
177177
Assert.True(Regex.IsMatch(oracle.SemVer1, @"^2.3.1-[^g]{10}$"));
178178
Assert.True(Regex.IsMatch(oracle.SemVer2, @"^2.3.1-[^g]{10}$"));
179179
Assert.True(Regex.IsMatch(oracle.NuGetPackageVersion, @"^2.3.1-g[a-f0-9]{10}$"));
180+
Assert.True(Regex.IsMatch(oracle.ChocolateyPackageVersion, @"^2.3.1-g[a-f0-9]{10}$"));
180181
}
181182

182183
[Fact]

src/NerdBank.GitVersioning/VersionOracle.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,14 @@ public IDictionary<string, string> CloudBuildVersionVars
337337
/// </summary>
338338
public string NuGetPackageVersion => this.VersionOptions?.NuGetPackageVersionOrDefault.SemVerOrDefault == 1 ? this.NuGetSemVer1 : this.SemVer2;
339339

340+
/// <summary>
341+
/// Gets the version to use for Chocolatey packages.
342+
/// </summary>
343+
/// <remarks>
344+
/// This always returns the NuGet subset of SemVer 1.0.
345+
/// </remarks>
346+
public string ChocolateyPackageVersion => this.NuGetSemVer1;
347+
340348
/// <summary>
341349
/// Gets the version to use for NPM packages.
342350
/// </summary>

src/Nerdbank.GitVersioning.Tasks/GetBuildVersion.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ public GetBuildVersion()
152152
[Output]
153153
public string NuGetPackageVersion { get; private set; }
154154

155+
[Output]
156+
public string ChocolateyPackageVersion { get; private set; }
157+
155158
[Output]
156159
public string NpmPackageVersion { get; private set; }
157160

@@ -214,6 +217,7 @@ protected override bool ExecuteInner()
214217
this.BuildMetadataFragment = oracle.BuildMetadataFragment;
215218
this.CloudBuildNumber = oracle.CloudBuildNumberEnabled ? oracle.CloudBuildNumber : null;
216219
this.NuGetPackageVersion = oracle.NuGetPackageVersion;
220+
this.ChocolateyPackageVersion = oracle.ChocolateyPackageVersion;
217221
this.NpmPackageVersion = oracle.NpmPackageVersion;
218222

219223
IEnumerable<ITaskItem> cloudBuildVersionVars = null;

src/Nerdbank.GitVersioning.Tasks/build/Nerdbank.GitVersioning.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
<Output TaskParameter="CloudBuildNumber" PropertyName="CloudBuildNumber" Condition=" '$(CloudBuildNumber)' == '' "/>
8787
<Output TaskParameter="BuildMetadataFragment" PropertyName="SemVerBuildSuffix" />
8888
<Output TaskParameter="NuGetPackageVersion" PropertyName="NuGetPackageVersion" />
89+
<Output TaskParameter="ChocolateyPackageVersion" PropertyName="ChocolateyPackageVersion" />
8990
<Output TaskParameter="NuGetPackageVersion" PropertyName="Version" />
9091
<Output TaskParameter="NuGetPackageVersion" PropertyName="PackageVersion" />
9192
<Output TaskParameter="NPMPackageVersion" PropertyName="NPMPackageVersion" />

0 commit comments

Comments
 (0)