Make changelog part of external rather than internal release
Summary: This makes the changelog generating part of the bump-version process, rather than the build-release Reviewed By: passy Differential Revision: D20284211 fbshipit-source-id: f4a5c9bdb98c91f11a216957c9d5175c4b64fe70
This commit is contained in:
committed by
Facebook Github Bot
parent
3113d2c180
commit
3165a5b504
@@ -1,3 +1,3 @@
|
||||
# Pre-history
|
||||
|
||||
Please see our [releases GitHub page](https://github.com/facebook/flipper/releases) for a full list of changes for every release.
|
||||
Please see our [releases GitHub page](https://github.com/facebook/flipper/releases) for a full list of changes of old releases.
|
||||
|
||||
@@ -89,6 +89,9 @@ jq '.version = $newVal' --arg newVal "$VERSION" "$SONAR_DIR"/package.json > tmp.
|
||||
#Update react-native-flipper to the very same version
|
||||
jq '.version = $newVal' --arg newVal "$VERSION" "$SONAR_DIR"/react-native/react-native-flipper/package.json > tmp.$$.json && mv tmp.$$.json "$SONAR_DIR"/react-native/react-native-flipper/package.json
|
||||
|
||||
#Generate changelog
|
||||
"$SONAR_DIR"/scripts/generate-changelog.js
|
||||
|
||||
echo "Committing the files..."
|
||||
hg addremove
|
||||
|
||||
|
||||
72
scripts/generate-changelog.js
Executable file
72
scripts/generate-changelog.js
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const cp = require('child_process');
|
||||
|
||||
const root = path.join(__dirname, '..');
|
||||
|
||||
const version = JSON.parse(
|
||||
fs.readFileSync(path.join(root, 'package.json'), 'utf8'),
|
||||
).version;
|
||||
|
||||
const now = new Date();
|
||||
const date = `${now.getDate()}/${now.getMonth() + 1}/${now.getFullYear()}`;
|
||||
const newlineMarker = '__NEWLINE_MARKER__';
|
||||
const fChangelog = path.join(root, 'CHANGELOG.md');
|
||||
|
||||
const lastCommit = cp
|
||||
.execSync(`hg log --limit 1 --template '{node}'`, {cwd: root})
|
||||
.toString();
|
||||
const firstCommit = cp
|
||||
.execSync(
|
||||
`hg log --limit 1 --template '{node}' --keyword 'Flipper Release: v'`,
|
||||
{cwd: root},
|
||||
)
|
||||
.toString();
|
||||
|
||||
console.log(
|
||||
`Generating changelog for version ${version} based on ${firstCommit}..${lastCommit}`,
|
||||
);
|
||||
|
||||
// # get all commit summaries since last release | find all changelog entries, but make sure there is only one line per commit by temporarily replacing newlines
|
||||
const hgLogCommand = `hg log -r "${firstCommit}::${lastCommit} and file('../*')" --template "{phabdiff} - {sub('\n','${newlineMarker}', desc)}\n"`;
|
||||
const hgLog = cp.execSync(hgLogCommand).toString();
|
||||
|
||||
const diffRe = /^D\d+/;
|
||||
const changeLogLineRe = /(^changelog:\s*?)(.*?)$/i;
|
||||
|
||||
let contents = `# ${version} (${date})\n\n`;
|
||||
let changes = 0;
|
||||
|
||||
hgLog
|
||||
.split('\n')
|
||||
.filter(line => diffRe.test(line))
|
||||
.forEach(line => {
|
||||
// Grab the diff nr from every line in the output
|
||||
const diff = line.trim().match(diffRe)[0];
|
||||
// unfold the lines generated by hg log again
|
||||
line.split(newlineMarker).forEach(diffline => {
|
||||
// if a line starts with changelog:, grab the rest of the text and add it to the changelog
|
||||
const match = diffline.match(changeLogLineRe);
|
||||
if (match) {
|
||||
changes++;
|
||||
contents += ` * ${diff} - ${match[2]}\n`;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (!changes) {
|
||||
console.log('No diffs with changelog items found in this release');
|
||||
} else {
|
||||
contents += '\n\n' + fs.readFileSync(fChangelog, 'utf8');
|
||||
fs.writeFileSync(fChangelog, contents);
|
||||
}
|
||||
3
static/CHANGELOG.md
Normal file
3
static/CHANGELOG.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Changelog
|
||||
|
||||
See [static/CHANGELOG.md](static/CHANGELOG.md)
|
||||
Reference in New Issue
Block a user