Skip to content

Commit 0f6ac6c

Browse files
Jerichogep13
authored andcommitted
(GitTools#568) Set the 'Due date' when closing a milestone
This is controlled via new set-due-date value in the close section of the GitReleaseManager.yaml file. This operation is disabled by default, and something which the user has to opt into to make use of.
1 parent 240b32a commit 0f6ac6c

File tree

6 files changed

+19
-1
lines changed

6 files changed

+19
-1
lines changed

src/GitReleaseManager.Core/Configuration/CloseConfig.cs

+7
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,12 @@ public sealed class CloseConfig
2222
[Sample(":tada: This issue has been resolved in version {milestone} :tada:\n\nThe release is available on:\n\n- [NuGet package(@{milestone})](https://nuget.org/packages/{repository}/{milestone})\n- [GitHub release](https://github.com/{owner}/{repository}/releases/tag/{milestone})\n\nYour **[GitReleaseManager](https://github.com/GitTools/GitReleaseManager)** bot :package::rocket:")]
2323
[YamlMember(Alias = "issue-comment", ScalarStyle = YamlDotNet.Core.ScalarStyle.Literal)]
2424
public string IssueCommentFormat { get; set; }
25+
26+
/// <summary>
27+
/// Gets or sets a value indicating whether the due date should be set when closing the milestone.
28+
/// </summary>
29+
[Description("Whether to set the due date when closing the milestone.")]
30+
[YamlMember(Alias = "set-due-date")]
31+
public bool SetDueDate { get; set; }
2532
}
2633
}

src/GitReleaseManager.Core/Configuration/Config.cs

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public Config()
4242
{
4343
IssueComments = false,
4444
IssueCommentFormat = ISSUE_COMMENT_FORMAT,
45+
SetDueDate = false, // by default, do not set the due date to match previous behavior
4546
};
4647

4748
DefaultBranch = "master";

src/GitReleaseManager.Core/Model/Milestone.cs

+2
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,7 @@ public sealed class Milestone
1717
public string Url { get; set; }
1818

1919
public Version Version { get; set; }
20+
21+
public DateTimeOffset? DueOn { get; set; }
2022
}
2123
}

src/GitReleaseManager.Core/Provider/GitHubProvider.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ public Task SetMilestoneStateAsync(string owner, string repository, Milestone mi
227227
{
228228
return GitHubProvider.ExecuteAsync(async () =>
229229
{
230-
var update = new MilestoneUpdate { State = (Octokit.ItemState)itemState };
230+
var update = new MilestoneUpdate { State = (Octokit.ItemState)itemState, DueOn = milestone.DueOn };
231231
await _gitHubClient.Issue.Milestone.Update(owner, repository, milestone.PublicNumber, update).ConfigureAwait(false);
232232
});
233233
}

src/GitReleaseManager.Core/Provider/GitLabProvider.cs

+5
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,11 @@ public Task SetMilestoneStateAsync(string owner, string repository, Milestone mi
267267
}
268268
else if (itemState == ItemState.Closed)
269269
{
270+
if (milestone.DueOn.HasValue)
271+
{
272+
mileStoneClient.Update(milestone.InternalNumber, new MilestoneUpdate { DueDate = milestone.DueOn.Value.ToString("o", CultureInfo.InvariantCulture) });
273+
}
274+
270275
mileStoneClient.Close(milestone.InternalNumber);
271276
}
272277

src/GitReleaseManager.Core/VcsService.cs

+3
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,9 @@ public async Task CloseMilestoneAsync(string owner, string repository, string mi
254254
_logger.Verbose("Finding open milestone with title '{Title}' on '{Owner}/{Repository}'", milestoneTitle, owner, repository);
255255
var milestone = await _vcsProvider.GetMilestoneAsync(owner, repository, milestoneTitle, ItemStateFilter.Open).ConfigureAwait(false);
256256

257+
// Set the due date only if configured to do so
258+
milestone.DueOn = _configuration.Close.SetDueDate ? DateTimeOffset.UtcNow : (DateTimeOffset?)null;
259+
257260
_logger.Verbose("Closing milestone '{Title}' on '{Owner}/{Repository}'", milestoneTitle, owner, repository);
258261
await _vcsProvider.SetMilestoneStateAsync(owner, repository, milestone, ItemState.Closed).ConfigureAwait(false);
259262

0 commit comments

Comments
 (0)