Skip to content

Commit

Permalink
build: update distribution (#17)
Browse files Browse the repository at this point in the history
Co-authored-by: shvgn <[email protected]>
  • Loading branch information
github-actions[bot] and shvgn authored Feb 8, 2022
1 parent 7c42ecd commit dcb049c
Showing 1 changed file with 30 additions and 43 deletions.
73 changes: 30 additions & 43 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ function groupByModuleAndType(acc, change) {
list = getTypeList("features");
break;
default:
throw new Error("invalid type");
throw new Error("invalid type: " + change.type);
}
list.push(new parse_1.Change({
description: change.description,
Expand All @@ -108,75 +108,62 @@ function groupByModuleAndType(acc, change) {
}));
return acc;
}
const MARKDOWN_HEADER_TAG = "h2";
const MARKDOWN_MODULE_TAG = "h4";
const MARKDOWN_HEADER_TAG = "h1";
const MARKDOWN_TYPE_TAG = "h2";
const MARKDOWN_NOTE_PREFIX = "**NOTE!**";
function formatMarkdown(milestone, changes) {
const body = [
{ [MARKDOWN_HEADER_TAG]: `Changelog ${milestone}` },
...formatMalformedEntries(changes),
...formatEntriesByModuleAndType(changes),
...formatFeatureEntries(changes),
...formatFixEntries(changes),
];
const md = (0, json2md_1.default)(body);
return fixLineBreaks(md);
return md;
}
exports.formatMarkdown = formatMarkdown;
function fixLineBreaks(md) {
const fixed = md
.split("\n")
.filter((s) => s.trim() != "")
.map((s) => (s.startsWith("###") ? `\n${s}\n` : s))
.map((s) => (s.startsWith("**") && s.endsWith("**") ? `\n${s}\n` : s))
.join("\n");
return fixed + "\n";
}
function formatEntriesByModuleAndType(changes) {
function formatFeatureEntries(changes) {
return formatEntries(changes, "feature", "Features");
}
function formatFixEntries(changes) {
return formatEntries(changes, "fix", "Fixes");
}
function formatEntries(changes, changeType, subHeader) {
const filtered = changes
.filter((c) => c.valid() && c.type == changeType)
.sort((a, b) => (a.module < b.module ? -1 : 1));
const body = [];
const validEntries = changes
.filter((c) => c.valid())
.reduce(groupByModuleAndType, {});
const pairs = Object.entries(validEntries).sort((a, b) => (a[0] < b[0] ? -1 : 1));
for (const [modName, changes] of pairs) {
body.push({ [MARKDOWN_MODULE_TAG]: modName });
body.push(...moduleChangesMarkdown(changes));
if (filtered.length === 0) {
return body;
}
body.push({ [MARKDOWN_TYPE_TAG]: subHeader });
body.push({ ul: filtered.map(changeMardown) });
return body;
}
function formatMalformedEntries(changes) {
const body = [];
const invalidEntries = changes
const malformed = changes
.filter((c) => !c.valid())
.sort((a, b) => (a.pull_request < b.pull_request ? -1 : 1));
if (invalidEntries.length > 0) {
body.push([{ [MARKDOWN_MODULE_TAG]: "[MALFORMED]" }]);
.map((c) => parsePullRequestNumberFromURL(c.pull_request))
.map((x) => parseInt(x))
.sort();
if (malformed.length > 0) {
body.push([{ [MARKDOWN_TYPE_TAG]: "[MALFORMED]" }]);
const ul = [];
for (const c of invalidEntries) {
const prNum = parsePullRequestNumberFromURL(c.pull_request);
ul.push(`[#${prNum}](${c.pull_request})`);
for (const num of malformed) {
ul.push(`#${num}`);
}
body.push({ ul: ul.sort() });
}
return body;
}
function moduleChangesMarkdown(moduleChanges) {
const md = [];
if (moduleChanges.features) {
md.push({ p: "**features**" });
md.push({ ul: moduleChanges.features.flatMap(changeMardown) });
}
if (moduleChanges.fixes) {
md.push({ p: "**fixes**" });
md.push({ ul: moduleChanges.fixes.flatMap(changeMardown) });
}
return md;
}
function parsePullRequestNumberFromURL(prUrl) {
const parts = prUrl.split("/");
return parts[parts.length - 1];
}
function changeMardown(c) {
const pr = parsePullRequestNumberFromURL(c.pull_request);
const lines = [`${c.description} [#${pr}](${pr})`];
const prNum = parsePullRequestNumberFromURL(c.pull_request);
const lines = [`**[${c.module}]** ${c.description} [#${prNum}](${c.pull_request})`];
if (c.note) {
lines.push(`${MARKDOWN_NOTE_PREFIX} ${c.note}`);
}
Expand Down

0 comments on commit dcb049c

Please sign in to comment.