32 lines
1.0 KiB
JavaScript
32 lines
1.0 KiB
JavaScript
const semver = require('semver');
|
|
const {execSync} = require('node:child_process');
|
|
|
|
/**
|
|
* Resolve the base git tag for diff/log comparisons during release preparation.
|
|
*
|
|
* For stable versions (e.g. "6.18.0"), returns "v6.18.0" — the tag for that version.
|
|
* For prerelease versions (e.g. "6.19.0-rc.0"), the tag "v6.19.0-rc.0" won't exist,
|
|
* so we find the most recent stable version tag in HEAD's ancestry using git describe.
|
|
*
|
|
* @param {string} version - The current Ghost version from package.json
|
|
* @param {string} repoDir - Path to the Ghost repo checkout
|
|
* @returns {{tag: string, isPrerelease: boolean}}
|
|
*/
|
|
function resolveBaseTag(version, repoDir) {
|
|
if (semver.prerelease(version)) {
|
|
const tag = execSync(
|
|
`git describe --tags --abbrev=0 --match 'v[0-9]*.[0-9]*.[0-9]*' --exclude 'v*-*' HEAD`,
|
|
{cwd: repoDir, encoding: 'utf8'}
|
|
).trim();
|
|
|
|
return {tag, isPrerelease: true};
|
|
}
|
|
|
|
return {
|
|
tag: `v${version}`,
|
|
isPrerelease: false
|
|
};
|
|
}
|
|
|
|
module.exports = {resolveBaseTag};
|