You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.7 KiB
79 lines
3.7 KiB
'use strict' |
|
|
|
var gitHosts = module.exports = { |
|
github: { |
|
// First two are insecure and generally shouldn't be used any more, but |
|
// they are still supported. |
|
'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ], |
|
'domain': 'github.com', |
|
'treepath': 'tree', |
|
'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}', |
|
'bugstemplate': 'https://{domain}/{user}/{project}/issues', |
|
'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}', |
|
'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}' |
|
}, |
|
bitbucket: { |
|
'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], |
|
'domain': 'bitbucket.org', |
|
'treepath': 'src', |
|
'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz' |
|
}, |
|
gitlab: { |
|
'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], |
|
'domain': 'gitlab.com', |
|
'treepath': 'tree', |
|
'bugstemplate': 'https://{domain}/{user}/{project}/issues', |
|
'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}', |
|
'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}', |
|
'pathmatch': /^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/ |
|
}, |
|
gist: { |
|
'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ], |
|
'domain': 'gist.github.com', |
|
'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/, |
|
'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}', |
|
'bugstemplate': 'https://{domain}/{project}', |
|
'gittemplate': 'git://{domain}/{project}.git{#committish}', |
|
'sshtemplate': 'git@{domain}:/{project}.git{#committish}', |
|
'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}', |
|
'browsetemplate': 'https://{domain}/{project}{/committish}', |
|
'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}', |
|
'docstemplate': 'https://{domain}/{project}{/committish}', |
|
'httpstemplate': 'git+https://{domain}/{project}.git{#committish}', |
|
'shortcuttemplate': '{type}:{project}{#committish}', |
|
'pathtemplate': '{project}{#committish}', |
|
'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}', |
|
'hashformat': function (fragment) { |
|
return 'file-' + formatHashFragment(fragment) |
|
} |
|
} |
|
} |
|
|
|
var gitHostDefaults = { |
|
'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}', |
|
'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}', |
|
'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}', |
|
'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}', |
|
'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme', |
|
'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}', |
|
'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}', |
|
'shortcuttemplate': '{type}:{user}/{project}{#committish}', |
|
'pathtemplate': '{user}/{project}{#committish}', |
|
'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/, |
|
'hashformat': formatHashFragment |
|
} |
|
|
|
Object.keys(gitHosts).forEach(function (name) { |
|
Object.keys(gitHostDefaults).forEach(function (key) { |
|
if (gitHosts[name][key]) return |
|
gitHosts[name][key] = gitHostDefaults[key] |
|
}) |
|
gitHosts[name].protocols_re = RegExp('^(' + |
|
gitHosts[name].protocols.map(function (protocol) { |
|
return protocol.replace(/([\\+*{}()[\]$^|])/g, '\\$1') |
|
}).join('|') + '):$') |
|
}) |
|
|
|
function formatHashFragment (fragment) { |
|
return fragment.toLowerCase().replace(/^\W+|\/|\W+$/g, '').replace(/\W+/g, '-') |
|
}
|
|
|