mirror of https://github.com/lukechilds/node.git
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.
32 lines
931 B
32 lines
931 B
// convert git:// form url to github URL, e.g.,
|
|
// git://github.com/bcoe/foo.git
|
|
// https://github.com/bcoe/foo.
|
|
function githubUrlFromGit(url, opts){
|
|
try {
|
|
var m = re(opts).exec(url.replace(/\.git(#.*)?$/, ''));
|
|
var host = m[1];
|
|
var path = m[2];
|
|
return 'https://' + host + '/' + path;
|
|
} catch (err) {
|
|
// ignore
|
|
}
|
|
};
|
|
|
|
// generate the git:// parsing regex
|
|
// with options, e.g., the ability
|
|
// to specify multiple GHE domains.
|
|
function re(opts) {
|
|
opts = opts || {};
|
|
// whitelist of URLs that should be treated as GitHub repos.
|
|
var baseUrls = ['gist.github.com', 'github.com'].concat(opts.extraBaseUrls || []);
|
|
// build regex from whitelist.
|
|
return new RegExp(
|
|
/^(?:https?:\/\/|git:\/\/|git\+ssh:\/\/|git\+https:\/\/)?(?:[^@]+@)?/.source +
|
|
'(' + baseUrls.join('|') + ')' +
|
|
/[:\/]([^\/]+\/[^\/]+?|[0-9]+)$/.source
|
|
);
|
|
}
|
|
|
|
githubUrlFromGit.re = re();
|
|
|
|
module.exports = githubUrlFromGit;
|
|
|