refactor: issue tracker configuration (#884)

This commit is contained in:
leo 2025-01-09 12:27:50 +08:00
parent f74dbdf8ed
commit 495b3a9296
No known key found for this signature in database
2 changed files with 31 additions and 111 deletions

View file

@ -188,91 +188,89 @@ namespace SourceGit.ViewModels
public void AddSampleGithubIssueTracker()
{
var link = "https://github.com/username/repository/issues/$1";
foreach (var remote in _repo.Remotes)
{
if (remote.URL.Contains("github.com", System.StringComparison.Ordinal))
if (remote.URL.Contains("github.com", System.StringComparison.Ordinal) &&
remote.TryGetVisitURL(out string url))
{
if (remote.TryGetVisitURL(out string url))
{
SelectedIssueTrackerRule = _repo.Settings.AddGithubIssueTracker(url);
return;
}
link = $"{url}/issues/$1";
break;
}
}
SelectedIssueTrackerRule = _repo.Settings.AddGithubIssueTracker(null);
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("Github ISSUE", "#(\\d+)", link);
}
public void AddSampleJiraIssueTracker()
{
SelectedIssueTrackerRule = _repo.Settings.AddJiraIssueTracker();
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("Jira Tracker", "PROJ-(\\d+)", "https://jira.yourcompany.com/browse/PROJ-$1");
}
public void AddSampleGitLabIssueTracker()
{
var link = "https://gitlab.com/username/repository/-/issues/$1";
foreach (var remote in _repo.Remotes)
{
if (remote.TryGetVisitURL(out string url))
{
SelectedIssueTrackerRule = _repo.Settings.AddGitLabIssueTracker(url);
return;
link = $"{url}/-/issues/$1";
break;
}
}
SelectedIssueTrackerRule = _repo.Settings.AddGitLabIssueTracker(null);
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("GitLab ISSUE", "#(\\d+)", link);
}
public void AddSampleGitLabMergeRequestTracker()
{
var link = "https://gitlab.com/username/repository/-/merge_requests/$1";
foreach (var remote in _repo.Remotes)
{
if (remote.TryGetVisitURL(out string url))
{
SelectedIssueTrackerRule = _repo.Settings.AddGitLabMergeRequestTracker(url);
return;
link = $"{url}/-/merge_requests/$1";
break;
}
}
SelectedIssueTrackerRule = _repo.Settings.AddGitLabMergeRequestTracker(null);
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("GitLab MR", "!(\\d+)", link);
}
public void AddSampleGiteeIssueTracker()
{
var link = "https://gitee.com/username/repository/issues/$1";
foreach (var remote in _repo.Remotes)
{
if (remote.URL.Contains("gitee.com", System.StringComparison.Ordinal))
if (remote.URL.Contains("gitee.com", System.StringComparison.Ordinal) &&
remote.TryGetVisitURL(out string url))
{
if (remote.TryGetVisitURL(out string url))
{
SelectedIssueTrackerRule = _repo.Settings.AddGiteeIssueTracker(url);
return;
}
link = $"{url}/issues/$1";
break;
}
}
SelectedIssueTrackerRule = _repo.Settings.AddGiteeIssueTracker(null);
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("Gitee ISSUE", "#([0-9A-Z]{6,10})", link);
}
public void AddSampleGiteePullRequestTracker()
{
var link = "https://gitee.com/username/repository/pulls/$1";
foreach (var remote in _repo.Remotes)
{
if (remote.URL.Contains("gitee.com", System.StringComparison.Ordinal))
if (remote.URL.Contains("gitee.com", System.StringComparison.Ordinal) &&
remote.TryGetVisitURL(out string url))
{
if (remote.TryGetVisitURL(out string url))
{
SelectedIssueTrackerRule = _repo.Settings.AddGiteePullRequestTracker(url);
return;
}
link = $"{url}/pulls/$1";
}
}
SelectedIssueTrackerRule = _repo.Settings.AddGiteePullRequestTracker(null);
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("Gitee Pull Request", "!(\\d+)", link);
}
public void NewIssueTracker()
{
SelectedIssueTrackerRule = _repo.Settings.AddNewIssueTracker();
SelectedIssueTrackerRule = _repo.Settings.AddIssueTracker("New Issue Tracker", "#(\\d+)", "https://xxx/$1");
}
public void RemoveSelectedIssueTracker()