11using System ;
22using System . Collections . Generic ;
3- using System . Text . RegularExpressions ;
43
54namespace SourceGit . Models
65{
7- public partial class CommitLink
6+ public class CommitLink
87 {
98 public string Name { get ; set ; } = null ;
109 public string URLPrefix { get ; set ; } = null ;
@@ -15,35 +14,35 @@ public CommitLink(string name, string prefix)
1514 URLPrefix = prefix ;
1615 }
1716
18- [ GeneratedRegex ( @"^(http|https)://[^/]*gitlab[^/]*(:[0-9]+)?.*$" ) ]
19- private static partial Regex REG_GITLAB ( ) ;
20-
2117 public static List < CommitLink > Get ( List < Remote > remotes )
2218 {
2319 var outs = new List < CommitLink > ( ) ;
2420
2521 foreach ( var remote in remotes )
2622 {
27- if ( remote . TryGetVisitURL ( out var url ) )
23+ if ( remote . TryGetVisitURL ( out var link ) )
2824 {
29- var trimmedUrl = url . AsSpan ( ) ;
30- if ( url . EndsWith ( ".git" ) )
31- trimmedUrl = url . AsSpan ( 0 , url . Length - 4 ) ;
25+ if ( link . EndsWith ( ".git" ) )
26+ link = link . Substring ( 0 , link . Length - 4 ) ;
27+
28+ var uri = new Uri ( link , UriKind . Absolute ) ;
29+ var host = uri . Host ;
30+ var route = uri . AbsolutePath . TrimStart ( '/' ) ;
3231
33- if ( url . StartsWith ( "https:// github.com/ ", StringComparison . Ordinal ) )
34- outs . Add ( new ( $ "GitHub ({ trimmedUrl [ 19 .. ] } )", $ "{ url } /commit/") ) ;
35- else if ( REG_GITLAB ( ) . IsMatch ( url ) )
36- outs . Add ( new ( $ "GitLab ({ trimmedUrl [ ( trimmedUrl [ 15 .. ] . IndexOf ( '/' ) + 16 ) .. ] } )", $ "{ url } /-/commit/") ) ;
37- else if ( url . StartsWith ( "https:// gitee.com/ ", StringComparison . Ordinal ) )
38- outs . Add ( new ( $ "Gitee ({ trimmedUrl [ 18 .. ] } )", $ "{ url } /commit/") ) ;
39- else if ( url . StartsWith ( "https:// bitbucket.org/ ", StringComparison . Ordinal ) )
40- outs . Add ( new ( $ "BitBucket ({ trimmedUrl [ 22 .. ] } )", $ "{ url } /commits/") ) ;
41- else if ( url . StartsWith ( "https:// codeberg.org/ ", StringComparison . Ordinal ) )
42- outs . Add ( new ( $ "Codeberg ({ trimmedUrl [ 21 .. ] } )", $ "{ url } /commit/") ) ;
43- else if ( url . StartsWith ( "https:// gitea.org/ ", StringComparison . Ordinal ) )
44- outs . Add ( new ( $ "Gitea ({ trimmedUrl [ 18 .. ] } )", $ "{ url } /commit/") ) ;
45- else if ( url . StartsWith ( "https://git.sr.ht/ ", StringComparison . Ordinal ) )
46- outs . Add ( new ( $ "sourcehut ({ trimmedUrl [ 18 .. ] } )", $ "{ url } /commit/") ) ;
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 ( "github.com ", StringComparison . Ordinal ) )
45+ outs . Add ( new ( $ "sourcehut ({ route } )", $ "{ link } /commit/") ) ;
4746 }
4847 }
4948
0 commit comments