pull/3136/head
Francisco Giordano 3 years ago
parent 7c47ac7193
commit d57593c148
  1. 22
      scripts/update-docs-branch.js

@ -5,16 +5,16 @@ const tryRead = cmd => { try { return read(cmd); } catch (e) { return undefined;
const releaseBranchRegex = /^release-v(?<version>(?<major>\d+)\.(?<minor>\d+)(?:\.(?<patch>\d+))?)$/; const releaseBranchRegex = /^release-v(?<version>(?<major>\d+)\.(?<minor>\d+)(?:\.(?<patch>\d+))?)$/;
const currentBranch = read(`git rev-parse --abbrev-ref HEAD`); const currentBranch = read('git rev-parse --abbrev-ref HEAD');
const match = currentBranch.match(releaseBranchRegex); const match = currentBranch.match(releaseBranchRegex);
if (!match) { if (!match) {
console.error(`Not currently on a release branch`); console.error('Not currently on a release branch');
process.exit(1); process.exit(1);
} }
if (/-.*$/.test(require('../package.json').version)) { if (/-.*$/.test(require('../package.json').version)) {
console.error(`Refusing to update docs: prerelease detected`); console.error('Refusing to update docs: prerelease detected');
process.exit(0); process.exit(0);
} }
@ -22,7 +22,7 @@ const current = match.groups;
const docsBranch = `docs-v${current.major}.x`; const docsBranch = `docs-v${current.major}.x`;
// Fetch remotes and find the docs branch if it exists // Fetch remotes and find the docs branch if it exists
run(`git fetch --all --no-tags`); run('git fetch --all --no-tags');
const matchingDocsBranches = tryRead(`git rev-parse --glob='*/${docsBranch}'`); const matchingDocsBranches = tryRead(`git rev-parse --glob='*/${docsBranch}'`);
if (!matchingDocsBranches) { if (!matchingDocsBranches) {
@ -32,24 +32,24 @@ if (!matchingDocsBranches) {
const [publishedRef, ...others] = new Set(matchingDocsBranches.split('\n')); const [publishedRef, ...others] = new Set(matchingDocsBranches.split('\n'));
if (others.length > 0) { if (others.length > 0) {
console.error( console.error(
`Found conflicting ${docsBranch} branches.\n` `Found conflicting ${docsBranch} branches.\n` +
+ `Either local branch is outdated or there are multiple matching remote branches.` 'Either local branch is outdated or there are multiple matching remote branches.',
); );
process.exit(1); process.exit(1);
} }
const publishedVersion = JSON.parse(read(`git show ${publishedRef}:package.json`)).version; const publishedVersion = JSON.parse(read(`git show ${publishedRef}:package.json`)).version;
const publishedMinor = publishedVersion.match(/\d+\.(?<minor>\d+)\.\d+/).groups.minor; const publishedMinor = publishedVersion.match(/\d+\.(?<minor>\d+)\.\d+/).groups.minor;
if (current.minor < publishedMinor) { if (current.minor < publishedMinor) {
console.error(`Refusing to update docs: newer version is published`); console.error('Refusing to update docs: newer version is published');
process.exit(0); process.exit(0);
} }
run(`git checkout --quiet --detach`); run('git checkout --quiet --detach');
run(`git reset --soft ${publishedRef}`); run(`git reset --soft ${publishedRef}`);
run(`git checkout ${docsBranch}`); run(`git checkout ${docsBranch}`);
} }
run(`npm run prepare-docs`); run('npm run prepare-docs');
run(`git add -f docs`); // --force needed because generated docs files are gitignored run('git add -f docs'); // --force needed because generated docs files are gitignored
run(`git commit -m "Update docs"`); run('git commit -m "Update docs"');
run(`git checkout ${currentBranch}`); run(`git checkout ${currentBranch}`);

Loading…
Cancel
Save