From e103b496d9f8d76777993aad6078aa134820a443 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 22 May 2024 10:30:46 +0200 Subject: [PATCH] meta: improve changelog generator We are regularly using `e2e`, `examples`, or `docs` as subsystems. We are no longer using `website`. --- private/release/formatChangeLog.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/private/release/formatChangeLog.js b/private/release/formatChangeLog.js index 4ca94cd86a..5ddb9189c7 100644 --- a/private/release/formatChangeLog.js +++ b/private/release/formatChangeLog.js @@ -4,12 +4,12 @@ import { spawn } from 'node:child_process' import prompts from 'prompts' -const atUppyPackagePath = /^packages\/(@uppy\/[a-z0-9-]+)\// +const subsystem = /((?<=^packages\/)@uppy\/[a-z0-9-]+|(?<=^)(?:docs|e2e|examples))\// async function inferPackageForCommit (sha, spawnOptions) { const cp = spawn('git', ['--no-pager', 'log', '-1', '--name-only', sha], spawnOptions) const candidates = {} for await (const path of createInterface({ input: cp.stdout })) { - const match = atUppyPackagePath.exec(path) + const match = subsystem.exec(path) if (match != null) { candidates[match[1]] ??= 0 candidates[match[1]]++ @@ -39,7 +39,7 @@ export default async function formatChangeLog ( '--format="%H::%s::%an"', `${LAST_RELEASE_COMMIT}..HEAD`, ], spawnOptions) - const expectedFormat = /^"([a-f0-9]+)::(?:((?:@uppy\/[a-z0-9-]+(?:,@uppy\/[a-z0-9-]+)*)|meta|website):\s?)?(.+?)(\s\(#\d+\))?::(.+)"$/ // eslint-disable-line max-len + const expectedFormat = /^"([a-f0-9]+)::(?:((?:@uppy\/[a-z0-9-]+(?:,@uppy\/[a-z0-9-]+)*)|meta|docs|e2e|examples):\s?)?(.+?)(\s\(#\d+\))?::(.+)"$/ // eslint-disable-line max-len for await (const log of createInterface({ input: gitLog.stdout })) { const [, sha, packageName, title, PR, authorName] = expectedFormat.exec(log) @@ -71,6 +71,7 @@ export default async function formatChangeLog ( message: 'Which package(s) does this commit belong to?', min: 1, choices: [ + { title: 'Docs', value: 'docs' }, { title: 'Meta', value: 'meta' }, ...Object.entries(candidates) .sort((a, b) => a[1] > b[1])