conventional-changelog
Version:
Generate a changelog from git metadata.
118 lines • 7.85 kB
JavaScript
function getType(domain) {
if (domain.includes('github')) {
return 'github';
}
if (domain.includes('gitlab')) {
return 'gitlab';
}
if (domain.includes('bitbucket')) {
return 'bitbucket';
}
if (domain.includes('git.sr.ht')) {
return 'sourcehut';
}
return '';
}
function getHost(type) {
switch (type) {
case 'github':
return 'https://github.com';
case 'gitlab':
return 'https://gitlab.com';
case 'bitbucket':
return 'https://bitbucket.org';
case 'sourcehut':
return 'https://git.sr.ht';
default:
return '';
}
}
function getRepositoryUrl(type, host, owner, project, branch) {
if (!host) {
return '';
}
let treepath = '';
if (branch) {
if (type === 'bitbucket') {
treepath = `/src/${encodeURIComponent(branch)}`;
}
else {
treepath = `/tree/${encodeURIComponent(branch)}`;
}
}
return `${host}/${owner}/${project}${treepath}`;
}
export function parseHostedGitUrl(input) {
// github edge case with branch in the url
let matches = input.match(/^(?:https:\/\/)?github\.com\/([^/]+)\/([^/.#]+)(?:\/tree\/[^/]+)?$/);
if (matches) {
return {
url: input,
type: 'github',
host: 'https://github.com',
owner: matches[1],
project: matches[2]
};
}
let type;
let host;
let owner;
let project;
// git+ssh and ssh urls
matches = input.match(/^(?:(?:git\+)?ssh:\/\/(?:[^@]+@)?|[^@]+@)(?:www\.)?([^@:]+):([^/]+(?:\/[^/]+)?)\/([^/.#]+)(?:\.git)?(?:#(.+))?/);
if (matches) {
type = getType(matches[1]);
host = `https://${matches[1]}`;
owner = matches[2];
project = matches[3];
return {
url: getRepositoryUrl(type, host, owner, project, matches[4]),
type,
host,
owner,
project
};
}
// git+https and https urls
matches = input.match(/^(?:(?:git\+)?https|git):\/\/(?:[^@]+@)?(?:www\.)?([^@/]+)\/([^/]+(?:\/[^/]+)?)\/([^/.#]+)(?:\.git)?(?:#(.+))?/);
if (matches) {
type = getType(matches[1]);
host = `http${type || input.includes('https://') ? 's' : ''}://${matches[1]}`;
owner = matches[2];
project = matches[3];
return {
url: getRepositoryUrl(type, host, owner, project, matches[4]),
type,
host,
owner,
project
};
}
// shortcuts
matches = input.match(/^(?:([^@:]+):)?(?:[^@:]+@|[^@:]*:[^@:]+@)?([^/#]+(?:\/[^/]+)?)\/([^/.#]+)(?:\.git)?(?:#(.+))?/);
if (matches) {
type = matches[1] || 'github';
host = getHost(type);
owner = matches[2];
project = matches[3];
return {
url: getRepositoryUrl(type, host, owner, project, matches[4]),
type,
host,
owner,
project
};
}
matches = input.match(/^\w+:\/\/([^/]+)(\/[^#]+)?/);
if (matches) {
type = getType(matches[1]);
host = `http${type || input.includes('https://') ? 's' : ''}://${matches[1]}`;
return {
url: `${host}${matches[2]?.replace(/\/?\.git.*/, '') || ''}`,
type,
host
};
}
return null;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkR2l0SW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ob3N0ZWRHaXRJbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLFNBQVMsT0FBTyxDQUFDLE1BQWM7SUFDN0IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzdCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzdCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sV0FBVyxDQUFBO0tBQ25CO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sV0FBVyxDQUFBO0tBQ25CO0lBRUQsT0FBTyxFQUFFLENBQUE7QUFDWCxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsSUFBWTtJQUMzQixRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssUUFBUTtZQUNYLE9BQU8sb0JBQW9CLENBQUE7UUFDN0IsS0FBSyxRQUFRO1lBQ1gsT0FBTyxvQkFBb0IsQ0FBQTtRQUM3QixLQUFLLFdBQVc7WUFDZCxPQUFPLHVCQUF1QixDQUFBO1FBQ2hDLEtBQUssV0FBVztZQUNkLE9BQU8sbUJBQW1CLENBQUE7UUFDNUI7WUFDRSxPQUFPLEVBQUUsQ0FBQTtLQUNaO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQ3ZCLElBQWMsRUFDZCxJQUFZLEVBQ1osS0FBYSxFQUNiLE9BQWUsRUFDZixNQUFjO0lBRWQsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE9BQU8sRUFBRSxDQUFBO0tBQ1Y7SUFFRCxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFFakIsSUFBSSxNQUFNLEVBQUU7UUFDVixJQUFJLElBQUksS0FBSyxXQUFXLEVBQUU7WUFD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