Files
KArtSell.Aegis/docs/Design/kbx-foundation-v36/scripts/validate-release-governance.mjs
T

15 lines
784 B
JavaScript

import fs from 'node:fs'
import { spawnSync } from 'node:child_process'
const result=spawnSync(process.execPath,['scripts/analyze-kbx-release.mjs'],{stdio:'inherit'})
if(result.status!==0)process.exit(result.status??1)
const impact=JSON.parse(fs.readFileSync('generated/release-impact.json','utf8'))
if(impact.requiredChangeLevel==='major' && !fs.existsSync('docs/release/migration-guide.md')){
console.error('major KBX change requires docs/release/migration-guide.md')
process.exit(1)
}
for(const change of impact.changes.filter(x=>x.kind==='component'&&x.change==='version')){
if(!/^\d+\.\d+\.\d+$/.test(change.to)){console.error(`invalid component semver: ${change.key} ${change.to}`);process.exit(1)}
}
console.log(`release governance PASS: ${impact.requiredChangeLevel}`)