c9-core/node_modules/c9/scm_url_parse.js

66 wiersze
1.9 KiB
JavaScript
Czysty Zwykły widok Historia

define(function(require, exports, module) {
"use strict";
var Url = require("url");
var providers = {
"bitbucket.org": "bitbucket",
2015-12-28 16:08:04 +00:00
"github.com": "github",
"source.developers.google.com": "google",
};
var defaultProvider = "unknown";
module.exports = function(url) {
var m = url.match(/^(git)@([\w\.\d\-\_]+)(?:\/|:)([\w\.\d\-\_\/]+)/);
if (m) {
return {
protocol: "ssh:",
scm: "git",
provider: providers[m[2]] || defaultProvider,
auth: m[1],
hostname: m[2],
pathname: m[3]
};
}
var parsed = Url.parse(url);
if (
parsed &&
parsed.protocol &&
parsed.protocol.match(/^(git|http|https|ssh):$/) &&
parsed.hostname &&
parsed.slashes &&
parsed.pathname
) {
var scm;
var provider = providers[parsed.hostname] || defaultProvider;
switch (provider) {
case "github":
scm = "git";
break;
2015-12-28 16:08:04 +00:00
case "google":
scm = "git";
break;
case "bitbucket":
scm = parsed.pathname.match(/\.git$/) ? "git": "hg";
break;
default:
scm = parsed.pathname.match(/\.git$/) ? "git": "hg";
}
return {
protocol: parsed.protocol,
scm: scm,
provider: provider,
auth: parsed.auth || "",
hostname: parsed.hostname,
pathname: parsed.pathname.replace(/^\/+/, ""),
full: url
};
}
else {
return null;
}
};
2015-12-28 16:08:04 +00:00
});