diff --git a/src/Tgstation.Server.Api/Models/ErrorCode.cs b/src/Tgstation.Server.Api/Models/ErrorCode.cs
index 2b6b268cc5..323d769038 100644
--- a/src/Tgstation.Server.Api/Models/ErrorCode.cs
+++ b/src/Tgstation.Server.Api/Models/ErrorCode.cs
@@ -48,7 +48,7 @@ namespace Tgstation.Server.Api.Models
///
/// Generic database integrity failure.
///
- [Description("The operation could not be performed as it would violate database integrity. Please retry the request, making sure to not duplicate field names with existing entities.")]
+ [Description("The operation could not be performed as it would violate database integrity. Please retry the request, making sure to not duplicate field names with existing entities!")]
DatabaseIntegrityConflict,
///
@@ -58,9 +58,9 @@ namespace Tgstation.Server.Api.Models
MissingHostWatchdog,
///
- /// Attempted to change to a suite other than TGS4.
+ /// Attempted to change to a major version TGS4.
///
- [Description("Cannot update to a different tgstation-server suite version.")]
+ [Description("Cannot downgrade to tgstation-server major version <4!")]
CannotChangeServerSuite,
///
@@ -72,7 +72,7 @@ namespace Tgstation.Server.Api.Models
///
/// A server update was requested while another was in progress.
///
- [Description("A server update was requested while another was in progress")]
+ [Description("A server update was requested while another was in progress!")]
ServerUpdateInProgress,
///
diff --git a/src/Tgstation.Server.Host/Controllers/AdministrationController.cs b/src/Tgstation.Server.Host/Controllers/AdministrationController.cs
index 6b653b2eed..a7dd4c41d8 100644
--- a/src/Tgstation.Server.Host/Controllers/AdministrationController.cs
+++ b/src/Tgstation.Server.Host/Controllers/AdministrationController.cs
@@ -166,7 +166,7 @@ namespace Tgstation.Server.Host.Controllers
foreach (var release in releases)
if (Version.TryParse(release.TagName.Replace(updatesConfiguration.GitTagPrefix, String.Empty, StringComparison.Ordinal), out var version)
- && version.Major == assemblyInformationProvider.Version.Major
+ && version.Major > 3 // Forward/backward compatible but not before TGS4
&& (greatestVersion == null || version > greatestVersion))
greatestVersion = version;
repoUrl = new Uri((await repositoryTask.ConfigureAwait(false)).HtmlUrl);
@@ -225,7 +225,7 @@ namespace Tgstation.Server.Host.Controllers
AdditionalData = "newVersion is required!",
});
- if (model.NewVersion.Major != assemblyInformationProvider.Version.Major)
+ if (model.NewVersion.Major < 3)
return BadRequest(new ErrorMessageResponse(ErrorCode.CannotChangeServerSuite));
if (!serverControl.WatchdogPresent)
diff --git a/tests/Tgstation.Server.Tests/AdministrationTest.cs b/tests/Tgstation.Server.Tests/AdministrationTest.cs
index 2ea67f7c8d..a3eb17075b 100644
--- a/tests/Tgstation.Server.Tests/AdministrationTest.cs
+++ b/tests/Tgstation.Server.Tests/AdministrationTest.cs
@@ -1,4 +1,4 @@
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Linq;
using System.Threading;
@@ -70,7 +70,7 @@ namespace Tgstation.Server.Tests
}
//we've released a few 4.x versions now, check the release checker is at least somewhat functional
- Assert.AreEqual(4, model.LatestVersion.Major);
+ Assert.IsTrue(4 <= model.LatestVersion.Major);
}
}
}
diff --git a/tools/ReleaseNotes/Program.cs b/tools/ReleaseNotes/Program.cs
index 9597fdf9df..d431b2568e 100644
--- a/tools/ReleaseNotes/Program.cs
+++ b/tools/ReleaseNotes/Program.cs
@@ -201,8 +201,6 @@ namespace ReleaseNotes
var releases = await releasesTask.ConfigureAwait(false);
- var releasingSuite = version.Major;
-
Version highestReleaseVersion = null;
Release highestRelease = null;
foreach (var I in releases)
@@ -213,7 +211,7 @@ namespace ReleaseNotes
continue;
}
- if (currentReleaseVersion.Major == releasingSuite && (highestReleaseVersion == null || currentReleaseVersion > highestReleaseVersion) && version != currentReleaseVersion)
+ if (currentReleaseVersion.Major == version.Major && (highestReleaseVersion == null || currentReleaseVersion > highestReleaseVersion) && version != currentReleaseVersion)
{
highestReleaseVersion = currentReleaseVersion;
highestRelease = I;
@@ -222,7 +220,7 @@ namespace ReleaseNotes
if (highestReleaseVersion == null)
{
- Console.WriteLine("Unable to determine highest release version for suite " + releasingSuite + "!");
+ Console.WriteLine("Unable to determine highest release version for major version " + version.Major + "!");
return 6;
}
@@ -247,49 +245,38 @@ namespace ReleaseNotes
oldNotes = String.Join('\n', splits);
string prefix;
- switch (releasingSuite)
+ const string PropsPath = "build/Version.props";
+ const string ControlPanelPropsPath = "build/ControlPanelVersion.props";
+
+ var doc = XDocument.Load(PropsPath);
+ var project = doc.Root;
+ var xmlNamespace = project.GetDefaultNamespace();
+ var versionsPropertyGroup = project.Elements().First(x => x.Name == xmlNamespace + "PropertyGroup");
+
+ var doc2 = XDocument.Load(ControlPanelPropsPath);
+ var project2 = doc2.Root;
+ var controlPanelXmlNamespace = project2.GetDefaultNamespace();
+ var controlPanelVersionsPropertyGroup = project2.Elements().First(x => x.Name == controlPanelXmlNamespace + "PropertyGroup");
+
+ var coreVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsCoreVersion").Value);
+ if (coreVersion != version)
{
- case 4:
- const string PropsPath = "build/Version.props";
- const string ControlPanelPropsPath = "build/ControlPanelVersion.props";
-
- var doc = XDocument.Load(PropsPath);
- var project = doc.Root;
- var xmlNamespace = project.GetDefaultNamespace();
- var versionsPropertyGroup = project.Elements().First(x => x.Name == xmlNamespace + "PropertyGroup");
-
- var doc2 = XDocument.Load(ControlPanelPropsPath);
- var project2 = doc2.Root;
- var controlPanelXmlNamespace = project2.GetDefaultNamespace();
- var controlPanelVersionsPropertyGroup = project2.Elements().First(x => x.Name == controlPanelXmlNamespace + "PropertyGroup");
-
- var coreVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsCoreVersion").Value);
- if (coreVersion != version)
- {
- Console.WriteLine("Received a different version on command line than in Version.props!");
- return 10;
- }
-
- var apiVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsApiVersion").Value);
- var configVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsConfigVersion").Value);
- var dmApiVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsDmapiVersion").Value);
- var interopVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsInteropVersion").Value);
- var webControlVersion = Version.Parse(controlPanelVersionsPropertyGroup.Element(controlPanelXmlNamespace + "TgsControlPanelVersion").Value);
- var hostWatchdogVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsHostWatchdogVersion").Value);
-
- if (webControlVersion.Major == 0)
- postControlPanelMessage = true;
-
- prefix = $"Please refer to the [README](https://github.com/tgstation/tgstation-server#setup) for setup instructions.{Environment.NewLine}{Environment.NewLine}#### Component Versions\nCore: {coreVersion}\nConfiguration: {configVersion}\nHTTP API: {apiVersion}\nDreamMaker API: {dmApiVersion} (Interop: {interopVersion})\n[Web Control Panel](https://github.com/tgstation/tgstation-server-webpanel): {webControlVersion}\nHost Watchdog: {hostWatchdogVersion}";
- break;
- case 3:
- prefix = "The /tg/station server suite";
- break;
- default:
- prefix = "See https://tgstation.github.io/tgstation-server for installation instructions";
- break;
+ Console.WriteLine("Received a different version on command line than in Version.props!");
+ return 10;
}
+ var apiVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsApiVersion").Value);
+ var configVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsConfigVersion").Value);
+ var dmApiVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsDmapiVersion").Value);
+ var interopVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsInteropVersion").Value);
+ var webControlVersion = Version.Parse(controlPanelVersionsPropertyGroup.Element(controlPanelXmlNamespace + "TgsControlPanelVersion").Value);
+ var hostWatchdogVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsHostWatchdogVersion").Value);
+
+ if (webControlVersion.Major == 0)
+ postControlPanelMessage = true;
+
+ prefix = $"Please refer to the [README](https://github.com/tgstation/tgstation-server#setup) for setup instructions.{Environment.NewLine}{Environment.NewLine}#### Component Versions\nCore: {coreVersion}\nConfiguration: {configVersion}\nHTTP API: {apiVersion}\nDreamMaker API: {dmApiVersion} (Interop: {interopVersion})\n[Web Control Panel](https://github.com/tgstation/tgstation-server-webpanel): {webControlVersion}\nHost Watchdog: {hostWatchdogVersion}";
+
var newNotes = new StringBuilder(prefix);
if (postControlPanelMessage)
{
@@ -453,7 +440,7 @@ namespace ReleaseNotes
newNotes.Append(Environment.NewLine);
- if (version != new Version(4, 1, 0))
+ if (version.Minor != 0 && version.Build != 0)
newNotes.Append(oldNotes);
const string OutputPath = "release_notes.md";