mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Add changelog entries under release candidate header (#10784)
Instead of always placing new changelog entries under the "Current Develop Branch" header, the changelog script now places them under the header for the current release if that release has not yet been tagged. This eliminates one manual step from the release process. Relates to #10752
This commit is contained in:
parent
358fec049b
commit
dc75c18bdf
@ -1,6 +1,8 @@
|
||||
#!/usr/bin/env node
|
||||
const fs = require('fs').promises;
|
||||
const assert = require('assert').strict;
|
||||
const path = require('path');
|
||||
const { version } = require('../app/manifest/_base.json');
|
||||
const runCommand = require('./lib/runCommand');
|
||||
|
||||
const URL = 'https://github.com/MetaMask/metamask-extension';
|
||||
@ -18,6 +20,7 @@ async function main() {
|
||||
'--tags',
|
||||
mostRecentTagCommitHash,
|
||||
]);
|
||||
assert.equal(mostRecentTag[0], 'v', 'Most recent tag should start with v');
|
||||
|
||||
const commitsSinceLastRelease = await runCommand('git', [
|
||||
'rev-list',
|
||||
@ -67,11 +70,28 @@ async function main() {
|
||||
const changelogFilename = path.resolve(__dirname, '..', 'CHANGELOG.md');
|
||||
const changelog = await fs.readFile(changelogFilename, { encoding: 'utf8' });
|
||||
const changelogLines = changelog.split('\n');
|
||||
const releaseHeaderIndex = changelogLines.findIndex(
|
||||
(line) => line === '## Current Develop Branch',
|
||||
|
||||
// remove the "v" prefix
|
||||
const mostRecentVersion = mostRecentTag.slice(1);
|
||||
|
||||
const isReleaseCandidate = mostRecentVersion !== version;
|
||||
const versionHeader = `## ${version}`;
|
||||
const currentDevelopBranchHeader = '## Current Develop Branch';
|
||||
const currentReleaseHeaderPattern = isReleaseCandidate
|
||||
? // This ensures this doesn't match on a version with a suffix
|
||||
// e.g. v9.0.0 should not match on the header v9.0.0-beta.0
|
||||
`${versionHeader}$|${versionHeader}\\s`
|
||||
: currentDevelopBranchHeader;
|
||||
|
||||
const releaseHeaderIndex = changelogLines.findIndex((line) =>
|
||||
line.match(new RegExp(currentReleaseHeaderPattern, 'u')),
|
||||
);
|
||||
if (releaseHeaderIndex === -1) {
|
||||
throw new Error('Failed to find release header');
|
||||
throw new Error(
|
||||
`Failed to find release header '${
|
||||
isReleaseCandidate ? versionHeader : currentDevelopBranchHeader
|
||||
}'`,
|
||||
);
|
||||
}
|
||||
changelogLines.splice(releaseHeaderIndex + 1, 0, ...changelogEntries);
|
||||
const updatedChangelog = changelogLines.join('\n');
|
||||
|
Loading…
Reference in New Issue
Block a user