Skip to content

Commit 9bae240

Browse files
authored
Merge branch 'develop' into heartacker/issue1632
2 parents 2859641 + 7d09af1 commit 9bae240

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

src/Models/CommitLink.cs

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,29 @@ public static List<CommitLink> Get(List<Remote> remotes)
2020

2121
foreach (var remote in remotes)
2222
{
23-
if (remote.TryGetVisitURL(out var url))
23+
if (remote.TryGetVisitURL(out var link))
2424
{
25-
var trimmedUrl = url.AsSpan();
26-
if (url.EndsWith(".git"))
27-
trimmedUrl = url.AsSpan(0, url.Length - 4);
25+
if (link.EndsWith(".git"))
26+
link = link.Substring(0, link.Length - 4);
2827

29-
if (url.StartsWith("https://github.com/", StringComparison.Ordinal))
30-
outs.Add(new($"GitHub ({trimmedUrl[19..]})", $"{url}/commit/"));
31-
else if (url.StartsWith("https://gitlab.", StringComparison.Ordinal))
32-
outs.Add(new($"GitLab ({trimmedUrl[(trimmedUrl[15..].IndexOf('/') + 16)..]})", $"{url}/-/commit/"));
33-
else if (url.StartsWith("https://gitee.com/", StringComparison.Ordinal))
34-
outs.Add(new($"Gitee ({trimmedUrl[18..]})", $"{url}/commit/"));
35-
else if (url.StartsWith("https://bitbucket.org/", StringComparison.Ordinal))
36-
outs.Add(new($"BitBucket ({trimmedUrl[22..]})", $"{url}/commits/"));
37-
else if (url.StartsWith("https://codeberg.org/", StringComparison.Ordinal))
38-
outs.Add(new($"Codeberg ({trimmedUrl[21..]})", $"{url}/commit/"));
39-
else if (url.StartsWith("https://gitea.org/", StringComparison.Ordinal))
40-
outs.Add(new($"Gitea ({trimmedUrl[18..]})", $"{url}/commit/"));
41-
else if (url.StartsWith("https://git.sr.ht/", StringComparison.Ordinal))
42-
outs.Add(new($"sourcehut ({trimmedUrl[18..]})", $"{url}/commit/"));
28+
var uri = new Uri(link, UriKind.Absolute);
29+
var host = uri.Host;
30+
var route = uri.AbsolutePath.TrimStart('/');
31+
32+
if (host.Equals("github.com", StringComparison.Ordinal))
33+
outs.Add(new($"GitHub ({route})", $"{link}/commit/"));
34+
else if (host.Contains("gitlab", StringComparison.Ordinal))
35+
outs.Add(new($"GitLab ({route})", $"{link}/-/commit/"));
36+
else if (host.Equals("gitee.com", StringComparison.Ordinal))
37+
outs.Add(new($"Gitee ({route})", $"{link}/commit/"));
38+
else if (host.Equals("bitbucket.org", StringComparison.Ordinal))
39+
outs.Add(new($"BitBucket ({route})", $"{link}/commits/"));
40+
else if (host.Equals("codeberg.org", StringComparison.Ordinal))
41+
outs.Add(new($"Codeberg ({route})", $"{link}/commit/"));
42+
else if (host.Equals("gitea.org", StringComparison.Ordinal))
43+
outs.Add(new($"Gitea ({route})", $"{link}/commit/"));
44+
else if (host.Equals("git.sr.ht", StringComparison.Ordinal))
45+
outs.Add(new($"sourcehut ({route})", $"{link}/commit/"));
4346
}
4447
}
4548

src/Models/Remote.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ public partial class Remote
88
{
99
[GeneratedRegex(@"^https?://[^/]+/.+[^/\.]$")]
1010
private static partial Regex REG_HTTPS();
11+
1112
[GeneratedRegex(@"^git://[^/]+/.+[^/\.]$")]
1213
private static partial Regex REG_GIT();
14+
1315
[GeneratedRegex(@"^[\w\-]+@[\w\.\-]+(\:[0-9]+)?:([a-zA-z0-9~%][\w\-\./~%]*)?[a-zA-Z0-9](\.git)?$")]
1416
private static partial Regex REG_SSH1();
17+
1518
[GeneratedRegex(@"^ssh://([\w\-]+@)?[\w\.\-]+(\:[0-9]+)?/([a-zA-z0-9~%][\w\-\./~%]*)?[a-zA-Z0-9](\.git)?$")]
1619
private static partial Regex REG_SSH2();
1720

0 commit comments

Comments
 (0)