@@ -139,6 +139,36 @@ gitHosts.gist = Object.assign({}, defaults, {
139
139
}
140
140
} )
141
141
142
+ gitHosts . sourcehut = Object . assign ( { } , defaults , {
143
+ protocols : [ 'git+ssh:' , 'https:' ] ,
144
+ domain : 'git.sr.ht' ,
145
+ treepath : 'tree' ,
146
+ browsefiletemplate : ( { domain, user, project, committish, treepath, path, fragment, hashformat } ) => `https://${ domain } /${ user } /${ project } /${ treepath } /${ maybeEncode ( committish || 'main' ) } /${ path } ${ maybeJoin ( '#' , hashformat ( fragment || '' ) ) } ` ,
147
+ filetemplate : ( { domain, user, project, committish, path } ) => `https://${ domain } /${ user } /${ project } /blob/${ maybeEncode ( committish ) || 'main' } /${ path } ` ,
148
+ httpstemplate : ( { domain, user, project, committish } ) => `https://${ domain } /${ user } /${ project } .git${ maybeJoin ( '#' , committish ) } ` ,
149
+ tarballtemplate : ( { domain, user, project, committish } ) => `https://${ domain } /${ user } /${ project } /archive/${ maybeEncode ( committish ) || 'main' } .tar.gz` ,
150
+ bugstemplate : ( { domain, user, project } ) => `https://todo.sr.ht/${ user } /${ project } ` ,
151
+ docstemplate : ( { domain, user, project, treepath, committish } ) => `https://${ domain } /${ user } /${ project } ${ maybeJoin ( '/' , treepath , '/' , maybeEncode ( committish ) ) } #readme` ,
152
+ extract : ( url ) => {
153
+ let [ , user , project , aux ] = url . pathname . split ( '/' , 4 )
154
+
155
+ // tarball url
156
+ if ( [ 'archive' ] . includes ( aux ) ) {
157
+ return
158
+ }
159
+
160
+ if ( project && project . endsWith ( '.git' ) ) {
161
+ project = project . slice ( 0 , - 4 )
162
+ }
163
+
164
+ if ( ! user || ! project ) {
165
+ return
166
+ }
167
+
168
+ return { user, project, committish : url . hash . slice ( 1 ) }
169
+ }
170
+ } )
171
+
142
172
const names = Object . keys ( gitHosts )
143
173
gitHosts . byShortcut = { }
144
174
gitHosts . byDomain = { }
0 commit comments