summaryrefslogtreecommitdiff
path: root/src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-09-13 18:24:54 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-09-13 18:24:54 -0400
commit6521df7b131924835eb797251c1e956fae0d6e13 (patch)
treeb704dc64b6b6fef72615bac8950d5eff3c80ea89 /src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs
parente22a54212182d0adc443ac95bc791e83c90f7e10 (diff)
parentb7b8b001c5c2dc5d2c9fc1347532ca29368c2325 (diff)
downloadSMAPI-6521df7b131924835eb797251c1e956fae0d6e13.tar.gz
SMAPI-6521df7b131924835eb797251c1e956fae0d6e13.tar.bz2
SMAPI-6521df7b131924835eb797251c1e956fae0d6e13.zip
Merge branch 'develop' into stable
Diffstat (limited to 'src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs')
-rw-r--r--src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs b/src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs
new file mode 100644
index 00000000..0a6e5758
--- /dev/null
+++ b/src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs
@@ -0,0 +1,68 @@
+using System;
+
+namespace StardewModdingAPI
+{
+ /// <summary>A semantic version with an optional release tag.</summary>
+ public interface ISemanticVersion : IComparable<ISemanticVersion>, IEquatable<ISemanticVersion>
+ {
+ /*********
+ ** Accessors
+ *********/
+ /// <summary>The major version incremented for major API changes.</summary>
+ int MajorVersion { get; }
+
+ /// <summary>The minor version incremented for backwards-compatible changes.</summary>
+ int MinorVersion { get; }
+
+ /// <summary>The patch version for backwards-compatible bug fixes.</summary>
+ int PatchVersion { get; }
+
+#if !SMAPI_3_0_STRICT
+ /// <summary>An optional build tag.</summary>
+ [Obsolete("Use " + nameof(ISemanticVersion.PrereleaseTag) + " instead")]
+ string Build { get; }
+#endif
+
+ /// <summary>An optional prerelease tag.</summary>
+ string PrereleaseTag { get; }
+
+
+ /*********
+ ** Accessors
+ *********/
+ /// <summary>Whether this is a pre-release version.</summary>
+ bool IsPrerelease();
+
+ /// <summary>Get whether this version is older than the specified version.</summary>
+ /// <param name="other">The version to compare with this instance.</param>
+ bool IsOlderThan(ISemanticVersion other);
+
+ /// <summary>Get whether this version is older than the specified version.</summary>
+ /// <param name="other">The version to compare with this instance.</param>
+ /// <exception cref="FormatException">The specified version is not a valid semantic version.</exception>
+ bool IsOlderThan(string other);
+
+ /// <summary>Get whether this version is newer than the specified version.</summary>
+ /// <param name="other">The version to compare with this instance.</param>
+ bool IsNewerThan(ISemanticVersion other);
+
+ /// <summary>Get whether this version is newer than the specified version.</summary>
+ /// <param name="other">The version to compare with this instance.</param>
+ /// <exception cref="FormatException">The specified version is not a valid semantic version.</exception>
+ bool IsNewerThan(string other);
+
+ /// <summary>Get whether this version is between two specified versions (inclusively).</summary>
+ /// <param name="min">The minimum version.</param>
+ /// <param name="max">The maximum version.</param>
+ bool IsBetween(ISemanticVersion min, ISemanticVersion max);
+
+ /// <summary>Get whether this version is between two specified versions (inclusively).</summary>
+ /// <param name="min">The minimum version.</param>
+ /// <param name="max">The maximum version.</param>
+ /// <exception cref="FormatException">One of the specified versions is not a valid semantic version.</exception>
+ bool IsBetween(string min, string max);
+
+ /// <summary>Get a string representation of the version.</summary>
+ string ToString();
+ }
+}