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
|
# 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
|
#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
|
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..."
|
echo "Committing the files..."
|
||||||
hg addremove
|
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