Skip to content
This repository was archived by the owner on Mar 20, 2019. It is now read-only.

Commit 02a1a7a

Browse files
committed
Centralized all version information, including prerelease details, into the version.txt file.
1 parent 4084f3c commit 02a1a7a

6 files changed

Lines changed: 50 additions & 7 deletions

File tree

lib/DotNetOpenAuth.BuildTasks.dll

1 KB
Binary file not shown.

lib/DotNetOpenAuth.BuildTasks.pdb

4 KB
Binary file not shown.

nuget/nuget.proj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
<NuGetPackages Include="DotNetOpenAuth.Ultimate.nuspec" />
5858

5959
<NuGetProperties Include="version=$(NuGetPackageVersion)" />
60-
<NuGetProperties Include="oauth2version=0.11.0-draft" />
60+
<NuGetProperties Include="oauth2version=$(OAuth2PackagesVersion)" />
6161
<NuGetProperties Include="OutputPath35=$(OutputPath35)" />
6262
<NuGetProperties Include="OutputPath40=$(OutputPath40)" />
6363
</ItemGroup>

src/DotNetOpenAuth.BuildTasks/GetBuildVersion.cs

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,21 @@ public GetBuildVersion() {
2828
[Output]
2929
public string SimpleVersion { get; private set; }
3030

31+
/// <summary>
32+
/// Gets or sets the prerelease version, or empty if this is a final release.
33+
/// </summary>
34+
/// <value>
35+
/// The prerelease version.
36+
/// </value>
37+
[Output]
38+
public string PrereleaseVersion { get; set; }
39+
40+
/// <summary>
41+
/// Gets or sets the version string to use for NuGet packages containing OAuth 2 components.
42+
/// </summary>
43+
[Output]
44+
public string OAuth2PackagesVersion { get; set; }
45+
3146
/// <summary>
3247
/// Gets the Git revision control commit id for HEAD (the current source code version).
3348
/// </summary>
@@ -53,7 +68,11 @@ public GetBuildVersion() {
5368

5469
public override bool Execute() {
5570
try {
56-
Version typedVersion = ReadVersionFromFile();
71+
Version typedVersion;
72+
string prerelease, oauth2PackagesVersion;
73+
this.ReadVersionFromFile(out typedVersion, out prerelease, out oauth2PackagesVersion);
74+
this.PrereleaseVersion = prerelease;
75+
this.OAuth2PackagesVersion = oauth2PackagesVersion;
5776
this.SimpleVersion = typedVersion.ToString();
5877
this.BuildNumber = this.CalculateJDate(DateTime.Now);
5978

@@ -127,10 +146,21 @@ private string GetGitHeadCommitId() {
127146
return commitId.Trim();
128147
}
129148

130-
private Version ReadVersionFromFile() {
149+
private void ReadVersionFromFile(out Version typedVersion, out string prereleaseVersion, out string oauth2PackagesVersion) {
131150
string[] lines = File.ReadAllLines(VersionFile);
132151
string versionLine = lines[0];
133-
return new Version(versionLine);
152+
prereleaseVersion = lines.Length >= 2 ? lines[1] : null;
153+
oauth2PackagesVersion = lines.Length >= 3 ? lines[2] : null;
154+
if (!String.IsNullOrEmpty(prereleaseVersion)) {
155+
if (!prereleaseVersion.StartsWith("-")) {
156+
// SemVer requires that prerelease suffixes begin with a hyphen, so add one if it's missing.
157+
prereleaseVersion = "-" + prereleaseVersion;
158+
}
159+
160+
this.VerifyValidPrereleaseVersion(prereleaseVersion);
161+
}
162+
163+
typedVersion = new Version(versionLine);
134164
}
135165

136166
private int CalculateJDate(DateTime date) {
@@ -140,5 +170,17 @@ private int CalculateJDate(DateTime date) {
140170
int jdate = yearLastDigit * 1000 + dayOfYear;
141171
return jdate;
142172
}
173+
174+
private void VerifyValidPrereleaseVersion(string prerelease) {
175+
if (prerelease[0] != '-') {
176+
throw new ArgumentOutOfRangeException("The prerelease string must begin with a hyphen.");
177+
}
178+
179+
for (int i = 1; i < prerelease.Length; i++) {
180+
if (!char.IsLetterOrDigit(prerelease[i])) {
181+
throw new ArgumentOutOfRangeException("The prerelease string must be alphanumeric.");
182+
}
183+
}
184+
}
143185
}
144186
}

src/version.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
4.0.0
2+
beta2
3+
0.23.0-draft

tools/DotNetOpenAuth.Versioning.targets

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
<PropertyGroup>
77
<VersionCsFile>$(IntermediatePath)\$(AssemblyName).Version.cs</VersionCsFile>
88
<NoWarn>$(NoWarn);1607</NoWarn>
9-
10-
<!-- PrereleaseVersion can be any alphanumeric identifier with a preceding hyphen, or blank. -->
11-
<PrereleaseVersion>-beta2</PrereleaseVersion>
129
</PropertyGroup>
1310

1411
<UsingTask AssemblyFile="$(ProjectRoot)lib\MSBuild.Community.Tasks.dll" TaskName="AssemblyInfo"/>
@@ -19,6 +16,8 @@
1916
GitRepoRoot="$(ProjectRoot)">
2017
<Output TaskParameter="Version" PropertyName="BuildVersion" />
2118
<Output TaskParameter="SimpleVersion" PropertyName="BuildVersionSimple" />
19+
<Output TaskParameter="PrereleaseVersion" PropertyName="PrereleaseVersion" />
20+
<Output TaskParameter="OAuth2PackagesVersion" PropertyName="OAuth2PackagesVersion" />
2221
<Output TaskParameter="GitCommitId" PropertyName="GitCommitId" />
2322
<Output TaskParameter="BuildNumber" PropertyName="BuildNumber" />
2423
</GetBuildVersion>

0 commit comments

Comments
 (0)