From c64af9cf9a3848a473aace7f56a2340cd75d7977 Mon Sep 17 00:00:00 2001 From: Leonid Gureev Date: Wed, 7 Dec 2022 14:49:07 +0400 Subject: [PATCH] Make labels optional. --- .../Github/GithubClientAdapter.cs | 18 ++++--- .../Settings/Options.cs | 48 +++++++++---------- .../Settings/SettingsParser.cs | 9 ++-- 3 files changed, 36 insertions(+), 39 deletions(-) diff --git a/src/IssueInProgressDaysLabeler.Model/Github/GithubClientAdapter.cs b/src/IssueInProgressDaysLabeler.Model/Github/GithubClientAdapter.cs index 05f2a8e..284ba49 100644 --- a/src/IssueInProgressDaysLabeler.Model/Github/GithubClientAdapter.cs +++ b/src/IssueInProgressDaysLabeler.Model/Github/GithubClientAdapter.cs @@ -28,26 +28,24 @@ public async Task> GetIssuesToUpdate( { var allIssues = new List(capacity: 100); - foreach (var label in labels) + var issueRequest = new RepositoryIssueRequest { - var issueRequest = new RepositoryIssueRequest - { - Since = since, - State = ItemStateFilter.All - }; + Since = since, + State = ItemStateFilter.All + }; + foreach (var label in labels) issueRequest.Labels.Add(label); - var issues = await ApiHelpers.ExecuteWithRetryAndDelay(() => _gitHubClient + var issues = await ApiHelpers.ExecuteWithRetryAndDelay(() => _gitHubClient .Issue .GetAllForRepository( _repositoryOwner, _repositoryName, issueRequest), - retryCount: 3); + retryCount: 3); - allIssues.AddRange(issues); - } + allIssues.AddRange(issues); return allIssues // TODO: make api call to filter assignees (now github api is not ready) diff --git a/src/IssueInProgressDaysLabeler.Model/Settings/Options.cs b/src/IssueInProgressDaysLabeler.Model/Settings/Options.cs index d887205..12b2d47 100644 --- a/src/IssueInProgressDaysLabeler.Model/Settings/Options.cs +++ b/src/IssueInProgressDaysLabeler.Model/Settings/Options.cs @@ -2,33 +2,33 @@ namespace IssueInProgressDaysLabeler.Model.Settings { - public class Options - { - [Option("github-repository", Required = true, HelpText = "Repository to increment days in and owner")] - public virtual string GithubRepositoryName { get; set; } = default!; + public class Options + { + [Option("github-repository", Required = true, HelpText = "Repository to increment days in and owner")] + public virtual string GithubRepositoryName { get; set; } = default!; - [Option("days-mode", Required = true, HelpText = "Enum: EveryDay, EveryDayExceptWeekend, RussianCalendar")] - public virtual string DaysMode { get; set; } = default!; + [Option("days-mode", Required = true, HelpText = "Enum: EveryDay, EveryDayExceptWeekend, RussianCalendar")] + public virtual string DaysMode { get; set; } = default!; - [Option("labels", Required = true, HelpText = "Suitable labels for issue days incrementation")] - public virtual string Labels { get; set; } = default!; + [Option("labels", Required = false, HelpText = "Suitable labels for issue days incrementation (all issues by default)")] + public virtual string? Labels { get; set; } - [Option("since-days", - Required = false, - HelpText = "Only issues updated during this last number of days are processed (none restriction by default)")] - public virtual string DaysSince { get; set; } = default!; + [Option("since-days", + Required = false, + HelpText = "Only issues updated during this last number of days are processed (none restriction by default)")] + public virtual string DaysSince { get; set; } = default!; - [Option("auto-cleanup", - Required = false, - HelpText = "Cleanup labels from issues in closed state (false by default)")] - public virtual string AutoCleanup { get; set; } = default!; + [Option("auto-cleanup", + Required = false, + HelpText = "Cleanup labels from issues in closed state (false by default)")] + public virtual string AutoCleanup { get; set; } = default!; - [Option("github-token", Required = true, HelpText = "Github secret token")] - public virtual string GithubToken { get; set; } = default!; + [Option("github-token", Required = true, HelpText = "Github secret token")] + public virtual string GithubToken { get; set; } = default!; - [Option("label-to-increment", - Required = true, - HelpText = @"Label that will be added to issue, for example ""In progress: {0} days"", placeholder is required")] - public virtual string LabelToIncrement { get; set; } = default!; - } -} + [Option("label-to-increment", + Required = true, + HelpText = @"Label that will be added to issue, for example ""In progress: {0} days"", placeholder is required")] + public virtual string LabelToIncrement { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/IssueInProgressDaysLabeler.Model/Settings/SettingsParser.cs b/src/IssueInProgressDaysLabeler.Model/Settings/SettingsParser.cs index 02cab4b..a7736df 100644 --- a/src/IssueInProgressDaysLabeler.Model/Settings/SettingsParser.cs +++ b/src/IssueInProgressDaysLabeler.Model/Settings/SettingsParser.cs @@ -50,15 +50,14 @@ public SettingsParser(ILogger logger) ? default(DateTimeOffset?) : DateTimeOffset.UtcNow - TimeSpan.FromDays(int.Parse(options.DaysSince)); - var labels = JsonConvert.DeserializeObject(options.Labels); - - if (labels == null) - throw new InvalidOperationException("labels can not be deserialized"); + var labels = options.Labels == null + ? Array.Empty() + : JsonConvert.DeserializeObject(options.Labels); return new( owner, repository, - labels, + labels!, options.GithubToken, Enum.Parse(options.DaysMode), options.LabelToIncrement,