Skip to content

Commit

Permalink
Merge pull request #1743 from tgstation/FixTargetComponentBS
Browse files Browse the repository at this point in the history
Fix issue with changelog generation and 🆑 emoji
  • Loading branch information
Cyberboss authored Dec 18, 2023
2 parents 6ecada5 + cee5a83 commit 5a0ffe5
Showing 1 changed file with 60 additions and 52 deletions.
112 changes: 60 additions & 52 deletions tools/Tgstation.Server.ReleaseNotes/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -567,72 +567,76 @@ async Task<Dictionary<Component, Version>> 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, Version>
{
{ Component.Core, Parse("TgsCoreVersion") },
{ Component.HttpApi, Parse("TgsApiVersion") },
{ Component.DreamMakerApi, Parse("TgsDmapiVersion") },
};
var dict = new Dictionary<Component, Version>
{
{ 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<Component, Version>();
}

return dict;
}

var componentVersions = needComponentExactVersions ? GetComponentVersions() : Task.FromResult<Dictionary<Component, Version>>(null);
Expand Down Expand Up @@ -684,7 +688,11 @@ async Task CommitNotes(Component component, List<string> 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";
}
Expand Down

0 comments on commit 5a0ffe5

Please sign in to comment.