diff --git a/tools/Tgstation.Server.ReleaseNotes/Program.cs b/tools/Tgstation.Server.ReleaseNotes/Program.cs index cbcd5487d87..098bbdcdaf5 100644 --- a/tools/Tgstation.Server.ReleaseNotes/Program.cs +++ b/tools/Tgstation.Server.ReleaseNotes/Program.cs @@ -567,72 +567,76 @@ async Task> GetComponentVersions() var mergeCommit = fullPR.MergeCommitSha; // we don't care about unreleased web control panel changes - try - { - needExtendedComponentVersions = ShouldGetExtendedComponentVersions(); + needExtendedComponentVersions = ShouldGetExtendedComponentVersions(); - var versionsBytes = await RLR(() => client.Repository.Content.GetRawContentByRef(RepoOwner, RepoName, "build/Version.props", mergeCommit)); + var versionsBytes = await RLR(() => client.Repository.Content.GetRawContentByRef(RepoOwner, RepoName, "build/Version.props", mergeCommit)); - XDocument doc; - using (var ms = new MemoryStream(versionsBytes)) - doc = XDocument.Load(ms); + XDocument doc; + using (var ms = new MemoryStream(versionsBytes)) + doc = XDocument.Load(ms); - var project = doc.Root; - var xmlNamespace = project.GetDefaultNamespace(); - var versionsPropertyGroup = project.Elements().First(x => x.Name == xmlNamespace + "PropertyGroup"); + var project = doc.Root; + var xmlNamespace = project.GetDefaultNamespace(); + var versionsPropertyGroup = project.Elements().First(x => x.Name == xmlNamespace + "PropertyGroup"); - Version Parse(string elemName, bool controlPanel = false) - { - var element = versionsPropertyGroup.Element(xmlNamespace + elemName); - if (element == null) - return null; + Version Parse(string elemName, bool controlPanel = false) + { + var element = versionsPropertyGroup.Element(xmlNamespace + elemName); + if (element == null) + return null; - return Version.Parse(element.Value); - } + return Version.Parse(element.Value); + } - var dict = new Dictionary - { - { Component.Core, Parse("TgsCoreVersion") }, - { Component.HttpApi, Parse("TgsApiVersion") }, - { Component.DreamMakerApi, Parse("TgsDmapiVersion") }, - }; + var dict = new Dictionary + { + { Component.Core, Parse("TgsCoreVersion") }, + { Component.HttpApi, Parse("TgsApiVersion") }, + { Component.DreamMakerApi, Parse("TgsDmapiVersion") }, + }; - if (await needExtendedComponentVersions) + if (await needExtendedComponentVersions) + { + // only grab some versions at release time + // we aggregate later + dict.Add(Component.Configuration, Parse("TgsConfigVersion")); + dict.Add(Component.InteropApi, Parse("TgsInteropVersion")); + dict.Add(Component.HostWatchdog, Parse("TgsHostWatchdogVersion")); + dict.Add(Component.NugetCommon, Parse("TgsCommonLibraryVersion")); + dict.Add(Component.NugetApi, Parse("TgsApiLibraryVersion")); + dict.Add(Component.NugetClient, Parse("TgsClientVersion")); + + var webVersion = Parse("TgsControlPanelVersion"); + if (webVersion != null) + { + dict.Add(Component.WebControlPanel, webVersion); + } + else { - // only grab some versions at release time - // we aggregate later - dict.Add(Component.Configuration, Parse("TgsConfigVersion")); - dict.Add(Component.InteropApi, Parse("TgsInteropVersion")); - dict.Add(Component.HostWatchdog, Parse("TgsHostWatchdogVersion")); - dict.Add(Component.NugetCommon, Parse("TgsCommonLibraryVersion")); - dict.Add(Component.NugetApi, Parse("TgsApiLibraryVersion")); - dict.Add(Component.NugetClient, Parse("TgsClientVersion")); - - var webVersion = Parse("TgsWebpanelVersion"); - if (webVersion != null) + byte[] controlPanelVersionBytes; + string elementName; + try { - dict.Add(Component.WebControlPanel, webVersion); + controlPanelVersionBytes = await RLR(() => client.Repository.Content.GetRawContentByRef(RepoOwner, RepoName, "build/WebpanelVersion.props", mergeCommit)); + elementName = "TgsWebpanelVersion"; } - else + catch (NotFoundException) { - var controlPanelVersionBytes = await RLR(() => client.Repository.Content.GetRawContentByRef(RepoOwner, RepoName, "build/WebpanelVersion.props", mergeCommit)); - using (var ms = new MemoryStream(controlPanelVersionBytes)) - doc = XDocument.Load(ms); + controlPanelVersionBytes = await RLR(() => client.Repository.Content.GetRawContentByRef(RepoOwner, RepoName, "build/ControlPanelVersion.props", mergeCommit)); + elementName = "TgsControlPanelVersion"; + } + using (var ms = new MemoryStream(controlPanelVersionBytes)) + doc = XDocument.Load(ms); - project = doc.Root; - var controlPanelXmlNamespace = project.GetDefaultNamespace(); - var controlPanelVersionsPropertyGroup = project.Elements().First(x => x.Name == controlPanelXmlNamespace + "PropertyGroup"); - dict.Add(Component.WebControlPanel, Version.Parse(controlPanelVersionsPropertyGroup.Element(controlPanelXmlNamespace + "TgsWebpanelVersion").Value)); - } + project = doc.Root; + var controlPanelXmlNamespace = project.GetDefaultNamespace(); + var controlPanelVersionsPropertyGroup = project.Elements().First(x => x.Name == controlPanelXmlNamespace + "PropertyGroup"); + dict.Add(Component.WebControlPanel, Version.Parse(controlPanelVersionsPropertyGroup.Element(controlPanelXmlNamespace + elementName).Value)); } - - return dict; - } - catch - { - return new Dictionary(); } + + return dict; } var componentVersions = needComponentExactVersions ? GetComponentVersions() : Task.FromResult>(null); @@ -684,7 +688,11 @@ async Task CommitNotes(Component component, List notes) { if (trimmedLine.StartsWith(":cl:", StringComparison.Ordinal) || trimmedLine.StartsWith("🆑", StringComparison.Ordinal)) { - targetComponent = trimmedLine[4..].Trim(); + var matchLength = trimmedLine.StartsWith("🆑", StringComparison.Ordinal) + ? "🆑".Length + : 4; + + targetComponent = trimmedLine[matchLength..].Trim(); if (targetComponent.Length == 0) targetComponent = "Core"; }