|
|
@ -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}`); |
|
|
|