From dcb049c1b6debdf60b83efcd3644f6393ff98a9c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Feb 2022 20:45:32 +0300 Subject: [PATCH] build: update distribution (#17) Co-authored-by: shvgn --- dist/index.js | 73 +++++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 43 deletions(-) diff --git a/dist/index.js b/dist/index.js index c626e70..51fb48b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -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, @@ -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}`); }