keep-a-changelog
Version:
Parse and generate changelogs following the [keepachangelog](https://keepachangelog.com/) format.
67 lines (66 loc) • 1.93 kB
JavaScript
/**
* Temporary URLPattern shim
* @see https://github.com/denoland/dnt/issues/336
*/
class URLPatternShim {
pattern;
constructor(pattern) {
if (typeof pattern === "string") {
pattern = pattern.replace(/\*/g, ".*");
pattern = new RegExp(`^${pattern}$`);
}
this.pattern = pattern;
}
test(url) {
return this.pattern.test(url);
}
}
export default function getSettingsForURL(url) {
return settings.find((settings) => settings.pattern.test(url));
}
export const settings = [
{
pattern: new URLPatternShim("https://github.com/*"),
head: "HEAD",
tagLink(url, tag, previous) {
if (!previous) {
return `${url}/releases/tag/${tag}`;
}
return `${url}/compare/${previous}...${tag}`;
},
},
{
pattern: new URLPatternShim("https://bitbucket.org/*"),
head: "master", // or main?
tagLink(url, tag, previous) {
if (!previous) {
return `${url}/src/${tag}`;
}
return `${url}/branches/compare/${tag}%0D${previous}`;
},
},
{
pattern: new URLPatternShim("https://gitlab.*/*"),
head: "master",
tagLink(url, tag, previous) {
if (!previous) {
return `${url}/-/tags/${tag}`;
}
return `${url}/-/compare/${previous}...${tag}`;
},
},
{
pattern: new URLPatternShim("https://dev.azure.com/*"),
head: "master",
tagLink(url, tag, previous, head) {
if (!previous) {
return `${url}?version=GT${tag}`;
}
let tagPrefix = "GT";
if (tag === head) {
tagPrefix = "GB";
}
return `${url}/branchCompare?baseVersion=GT${previous}&targetVersion=${tagPrefix}${tag}`;
},
},
];