diff --git a/tools/Tgstation.Server.ReleaseNotes/Program.cs b/tools/Tgstation.Server.ReleaseNotes/Program.cs index 098bbdcdaf..271bc9bb7f 100644 --- a/tools/Tgstation.Server.ReleaseNotes/Program.cs +++ b/tools/Tgstation.Server.ReleaseNotes/Program.cs @@ -316,8 +316,7 @@ namespace Tgstation.Server.ReleaseNotes State = ItemStateFilter.Open }); - var milestoneToDelete = milestones.FirstOrDefault(x => x.Title.StartsWith($"v{highestReleaseVersion.Major}.{highestReleaseVersion.Minor}.")); - if (milestoneToDelete != null) + async ValueTask DeleteMilestone(Milestone milestoneToDelete, int moveToMilestoneNumber) { Console.WriteLine($"Moving {milestoneToDelete.OpenIssues} open issues and {milestoneToDelete.ClosedIssues} closed issues from unused patch milestone {milestoneToDelete.Title} to upcoming ones and deleting..."); if (milestoneToDelete.OpenIssues + milestoneToDelete.ClosedIssues > 0) @@ -331,10 +330,11 @@ namespace Tgstation.Server.ReleaseNotes var issueUpdateTasks = new List(); foreach (var I in issuesInUnusedMilestone.Items) { - issueUpdateTasks.Add(client.Issue.Update(RepoOwner, RepoName, I.Number, new IssueUpdate - { - Milestone = I.State.Value == ItemState.Closed ? milestone.Number : nextPatchMilestone.Number - })); + if (I.State.Value != ItemState.Closed) + issueUpdateTasks.Add(client.Issue.Update(RepoOwner, RepoName, I.Number, new IssueUpdate + { + Milestone = moveToMilestoneNumber + })); if (I.PullRequest != null) { @@ -351,6 +351,11 @@ namespace Tgstation.Server.ReleaseNotes allTasks.Add(client.Issue.Milestone.Delete(RepoOwner, RepoName, milestoneToDelete.Number)); } + + var unreleasedNextPatchMilestone = milestones.FirstOrDefault(x => x.Title.StartsWith($"v{highestReleaseVersion.Major}.{highestReleaseVersion.Minor}.")); + if (unreleasedNextPatchMilestone != null) + await DeleteMilestone(unreleasedNextPatchMilestone, nextPatchMilestone.Number); + // Create the next minor milestone var nextMinorMilestoneName = $"v{version.Major}.{version.Minor + 1}.0"; Console.WriteLine($"Creating milestone {nextMinorMilestoneName}..."); @@ -372,15 +377,23 @@ namespace Tgstation.Server.ReleaseNotes State = ItemState.Open }); + var nextMinorMilestone = await nextMinorMilestoneTask.ConfigureAwait(false); if (abandonedIssues.Items.Any()) { - var nextMinorMilestone = await nextMinorMilestoneTask.ConfigureAwait(false); foreach (var I in abandonedIssues.Items) allTasks.Add(client.Issue.Update(RepoOwner, RepoName, I.Number, new IssueUpdate { Milestone = nextMinorMilestone.Number })); } + + if (version.Minor == 0 && version.Build == 0) + { + // major release + var unreleasedNextMinorMilestone = milestones.FirstOrDefault(x => x.Title.StartsWith($"v{highestReleaseVersion.Major}.{highestReleaseVersion.Minor + 1}.0")); + if (unreleasedNextMinorMilestone != null) + await DeleteMilestone(unreleasedNextMinorMilestone, nextMinorMilestone.Number); + } } }