Files
mygit/scripts/lib/resolve-base-tag.js
T
DuckQ1u 93d1b7c3d3
Copilot Setup Steps / copilot-setup-steps (push) Has been cancelled
first commit
2026-04-22 19:51:20 +07:00

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};