summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/DotNetOpenAuth.BuildTasks/GetBuildVersion.cs48
-rw-r--r--src/version.txt2
2 files changed, 47 insertions, 3 deletions
diff --git a/src/DotNetOpenAuth.BuildTasks/GetBuildVersion.cs b/src/DotNetOpenAuth.BuildTasks/GetBuildVersion.cs
index 50bc89f..6df372f 100644
--- a/src/DotNetOpenAuth.BuildTasks/GetBuildVersion.cs
+++ b/src/DotNetOpenAuth.BuildTasks/GetBuildVersion.cs
@@ -29,6 +29,21 @@ namespace DotNetOpenAuth.BuildTasks {
public string SimpleVersion { get; private set; }
/// <summary>
+ /// Gets or sets the prerelease version, or empty if this is a final release.
+ /// </summary>
+ /// <value>
+ /// The prerelease version.
+ /// </value>
+ [Output]
+ public string PrereleaseVersion { get; set; }
+
+ /// <summary>
+ /// Gets or sets the version string to use for NuGet packages containing OAuth 2 components.
+ /// </summary>
+ [Output]
+ public string OAuth2PackagesVersion { get; set; }
+
+ /// <summary>
/// Gets the Git revision control commit id for HEAD (the current source code version).
/// </summary>
[Output]
@@ -53,7 +68,11 @@ namespace DotNetOpenAuth.BuildTasks {
public override bool Execute() {
try {
- Version typedVersion = ReadVersionFromFile();
+ Version typedVersion;
+ string prerelease, oauth2PackagesVersion;
+ this.ReadVersionFromFile(out typedVersion, out prerelease, out oauth2PackagesVersion);
+ this.PrereleaseVersion = prerelease;
+ this.OAuth2PackagesVersion = oauth2PackagesVersion;
this.SimpleVersion = typedVersion.ToString();
this.BuildNumber = this.CalculateJDate(DateTime.Now);
@@ -127,10 +146,21 @@ namespace DotNetOpenAuth.BuildTasks {
return commitId.Trim();
}
- private Version ReadVersionFromFile() {
+ private void ReadVersionFromFile(out Version typedVersion, out string prereleaseVersion, out string oauth2PackagesVersion) {
string[] lines = File.ReadAllLines(VersionFile);
string versionLine = lines[0];
- return new Version(versionLine);
+ prereleaseVersion = lines.Length >= 2 ? lines[1] : null;
+ oauth2PackagesVersion = lines.Length >= 3 ? lines[2] : null;
+ if (!String.IsNullOrEmpty(prereleaseVersion)) {
+ if (!prereleaseVersion.StartsWith("-")) {
+ // SemVer requires that prerelease suffixes begin with a hyphen, so add one if it's missing.
+ prereleaseVersion = "-" + prereleaseVersion;
+ }
+
+ this.VerifyValidPrereleaseVersion(prereleaseVersion);
+ }
+
+ typedVersion = new Version(versionLine);
}
private int CalculateJDate(DateTime date) {
@@ -140,5 +170,17 @@ namespace DotNetOpenAuth.BuildTasks {
int jdate = yearLastDigit * 1000 + dayOfYear;
return jdate;
}
+
+ private void VerifyValidPrereleaseVersion(string prerelease) {
+ if (prerelease[0] != '-') {
+ throw new ArgumentOutOfRangeException("The prerelease string must begin with a hyphen.");
+ }
+
+ for (int i = 1; i < prerelease.Length; i++) {
+ if (!char.IsLetterOrDigit(prerelease[i])) {
+ throw new ArgumentOutOfRangeException("The prerelease string must be alphanumeric.");
+ }
+ }
+ }
}
}
diff --git a/src/version.txt b/src/version.txt
index fcdb2e1..e25332a 100644
--- a/src/version.txt
+++ b/src/version.txt
@@ -1 +1,3 @@
4.0.0
+beta2
+0.23.0-draft