14 lines
834 B
JavaScript
14 lines
834 B
JavaScript
import fs from 'node:fs'
|
|
import path from 'node:path'
|
|
|
|
const root=process.cwd()
|
|
const src=path.join(root,'packages/kbx-ui/src/registry/componentManifest.ts')
|
|
const out=path.join(root,'generated/component-manifest.json')
|
|
const text=fs.readFileSync(src,'utf8')
|
|
const entries=[...text.matchAll(/\{\s*name:\s*'([^']+)'\s*,\s*category:\s*'([^']+)'\s*,\s*purpose:\s*'([^']+)'[\s\S]*?version:\s*'([^']+)'\s*\}/g)]
|
|
.map(m=>({name:m[1],category:m[2],purpose:m[3],version:m[4]}))
|
|
const duplicate=entries.filter((x,i,a)=>a.findIndex(y=>y.name===x.name)!==i)
|
|
if(duplicate.length){console.error(`duplicate component manifest entries: ${duplicate.map(x=>x.name).join(', ')}`);process.exit(1)}
|
|
fs.writeFileSync(out,JSON.stringify(entries,null,2)+'\n')
|
|
console.log(`generated ${entries.length} component definitions -> ${path.relative(root,out)}`)
|