blob: 44872e8c10c2f88baebfa040c819d85d87d41178 [file] [log] [blame]
// 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;