Skip to content

Commit 495b3a9

Browse files
committed
refactor: issue tracker configuration (#884)
1 parent f74dbdf commit 495b3a9

File tree

2 files changed

+31
-111
lines changed

2 files changed

+31
-111
lines changed

src/Models/RepositorySettings.cs

Lines changed: 4 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -456,91 +456,13 @@ public void PushCommitMessage(string message)
456456
CommitMessages.Insert(0, message);
457457
}
458458

459-
public IssueTrackerRule AddNewIssueTracker()
459+
public IssueTrackerRule AddIssueTracker(string name, string regex, string url)
460460
{
461461
var rule = new IssueTrackerRule()
462462
{
463-
Name = "New Issue Tracker",
464-
RegexString = "#(\\d+)",
465-
URLTemplate = "https://xxx/$1",
466-
};
467-
468-
IssueTrackerRules.Add(rule);
469-
return rule;
470-
}
471-
472-
public IssueTrackerRule AddGithubIssueTracker(string repoURL)
473-
{
474-
var rule = new IssueTrackerRule()
475-
{
476-
Name = "Github ISSUE",
477-
RegexString = "#(\\d+)",
478-
URLTemplate = string.IsNullOrEmpty(repoURL) ? "https://github.com/username/repository/issues/$1" : $"{repoURL}/issues/$1",
479-
};
480-
481-
IssueTrackerRules.Add(rule);
482-
return rule;
483-
}
484-
485-
public IssueTrackerRule AddJiraIssueTracker()
486-
{
487-
var rule = new IssueTrackerRule()
488-
{
489-
Name = "Jira Tracker",
490-
RegexString = "PROJ-(\\d+)",
491-
URLTemplate = "https://jira.yourcompany.com/browse/PROJ-$1",
492-
};
493-
494-
IssueTrackerRules.Add(rule);
495-
return rule;
496-
}
497-
498-
public IssueTrackerRule AddGitLabIssueTracker(string repoURL)
499-
{
500-
var rule = new IssueTrackerRule()
501-
{
502-
Name = "GitLab ISSUE",
503-
RegexString = "#(\\d+)",
504-
URLTemplate = string.IsNullOrEmpty(repoURL) ? "https://gitlab.com/username/repository/-/issues/$1" : $"{repoURL}/-/issues/$1",
505-
};
506-
507-
IssueTrackerRules.Add(rule);
508-
return rule;
509-
}
510-
511-
public IssueTrackerRule AddGitLabMergeRequestTracker(string repoURL)
512-
{
513-
var rule = new IssueTrackerRule()
514-
{
515-
Name = "GitLab MR",
516-
RegexString = "!(\\d+)",
517-
URLTemplate = string.IsNullOrEmpty(repoURL) ? "https://gitlab.com/username/repository/-/merge_requests/$1" : $"{repoURL}/-/merge_requests/$1",
518-
};
519-
520-
IssueTrackerRules.Add(rule);
521-
return rule;
522-
}
523-
524-
public IssueTrackerRule AddGiteeIssueTracker(string repoURL)
525-
{
526-
var rule = new IssueTrackerRule()
527-
{
528-
Name = "Gitee ISSUE",
529-
RegexString = "#([0-9A-Z]{6,10})",
530-
URLTemplate = string.IsNullOrEmpty(repoURL) ? "https://gitee.com/username/repository/issues/$1" : $"{repoURL}/issues/$1",
531-
};
532-
533-
IssueTrackerRules.Add(rule);
534-
return rule;
535-
}
536-
537-
public IssueTrackerRule AddGiteePullRequestTracker(string repoURL)
538-
{
539-
var rule = new IssueTrackerRule()
540-
{
541-
Name = "Gitee Pull Request",
542-
RegexString = "!(\\d+)",
543-
URLTemplate = string.IsNullOrEmpty(repoURL) ? "https://gitee.com/username/repository/pulls/$1" : $"{repoURL}/pulls/$1",
463+
Name = name,
464+
RegexString = regex,
465+
URLTemplate = url,
544466
};
545467

546468
IssueTrackerRules.Add(rule);

src/ViewModels/RepositoryConfigure.cs

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -188,91 +188,89 @@ public void RemoveSelectedCommitTemplate()
188188

189189
public void AddSampleGithubIssueTracker()
190190
{
191+
var link = "https://github.com/username/repository/issues/$1";
191192
foreach (var remote in _repo.Remotes)
192193
{
193-
if (remote.URL.Contains("github.com", System.StringComparison.Ordinal))
194+
if (remote.URL.Contains("github.com", System.StringComparison.Ordinal) &&
195+
remote.TryGetVisitURL(out string url))
194196
{
195-
if (remote.TryGetVisitURL(out string url))
196-
{
197-
SelectedIssueTrackerRule = _repo.Settings.AddGithubIssueTracker(url);
198-
return;
199-
}
197+
link = $"{url}/issues/$1";
198+
break;
200199
}
201200
}
202201

203-
SelectedIssueTrackerRule = _repo.Settings.AddGithubIssueTracker(null);
202+
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("Github ISSUE", "#(\\d+)", link);
204203
}
205204

206205
public void AddSampleJiraIssueTracker()
207206
{
208-
SelectedIssueTrackerRule = _repo.Settings.AddJiraIssueTracker();
207+
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("Jira Tracker", "PROJ-(\\d+)", "https://jira.yourcompany.com/browse/PROJ-$1");
209208
}
210209

211210
public void AddSampleGitLabIssueTracker()
212211
{
212+
var link = "https://gitlab.com/username/repository/-/issues/$1";
213213
foreach (var remote in _repo.Remotes)
214214
{
215215
if (remote.TryGetVisitURL(out string url))
216216
{
217-
SelectedIssueTrackerRule = _repo.Settings.AddGitLabIssueTracker(url);
218-
return;
217+
link = $"{url}/-/issues/$1";
218+
break;
219219
}
220220
}
221221

222-
SelectedIssueTrackerRule = _repo.Settings.AddGitLabIssueTracker(null);
222+
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("GitLab ISSUE", "#(\\d+)", link);
223223
}
224224

225225
public void AddSampleGitLabMergeRequestTracker()
226226
{
227+
var link = "https://gitlab.com/username/repository/-/merge_requests/$1";
227228
foreach (var remote in _repo.Remotes)
228229
{
229230
if (remote.TryGetVisitURL(out string url))
230231
{
231-
SelectedIssueTrackerRule = _repo.Settings.AddGitLabMergeRequestTracker(url);
232-
return;
232+
link = $"{url}/-/merge_requests/$1";
233+
break;
233234
}
234235
}
235236

236-
SelectedIssueTrackerRule = _repo.Settings.AddGitLabMergeRequestTracker(null);
237+
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("GitLab MR", "!(\\d+)", link);
237238
}
238239

239240
public void AddSampleGiteeIssueTracker()
240241
{
242+
var link = "https://gitee.com/username/repository/issues/$1";
241243
foreach (var remote in _repo.Remotes)
242244
{
243-
if (remote.URL.Contains("gitee.com", System.StringComparison.Ordinal))
245+
if (remote.URL.Contains("gitee.com", System.StringComparison.Ordinal) &&
246+
remote.TryGetVisitURL(out string url))
244247
{
245-
if (remote.TryGetVisitURL(out string url))
246-
{
247-
SelectedIssueTrackerRule = _repo.Settings.AddGiteeIssueTracker(url);
248-
return;
249-
}
248+
link = $"{url}/issues/$1";
249+
break;
250250
}
251251
}
252252

253-
SelectedIssueTrackerRule = _repo.Settings.AddGiteeIssueTracker(null);
253+
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("Gitee ISSUE", "#([0-9A-Z]{6,10})", link);
254254
}
255255

256256
public void AddSampleGiteePullRequestTracker()
257257
{
258+
var link = "https://gitee.com/username/repository/pulls/$1";
258259
foreach (var remote in _repo.Remotes)
259260
{
260-
if (remote.URL.Contains("gitee.com", System.StringComparison.Ordinal))
261+
if (remote.URL.Contains("gitee.com", System.StringComparison.Ordinal) &&
262+
remote.TryGetVisitURL(out string url))
261263
{
262-
if (remote.TryGetVisitURL(out string url))
263-
{
264-
SelectedIssueTrackerRule = _repo.Settings.AddGiteePullRequestTracker(url);
265-
return;
266-
}
264+
link = $"{url}/pulls/$1";
267265
}
268266
}
269267

270-
SelectedIssueTrackerRule = _repo.Settings.AddGiteePullRequestTracker(null);
268+
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("Gitee Pull Request", "!(\\d+)", link);
271269
}
272270

273271
public void NewIssueTracker()
274272
{
275-
SelectedIssueTrackerRule = _repo.Settings.AddNewIssueTracker();
273+
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("New Issue Tracker", "#(\\d+)", "https://xxx/$1");
276274
}
277275

278276
public void RemoveSelectedIssueTracker()

0 commit comments

Comments
 (0)