15 lines
784 B
JavaScript
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}`)
|