Files
metabuilder/tools/generation/generate-package-index.cjs

41 lines
1.2 KiB
JavaScript

#!/usr/bin/env node
const fs = require('fs')
const path = require('path')
const packagesDir = path.join(__dirname, '..', 'packages')
const entries = fs.readdirSync(packagesDir, { withFileTypes: true })
const packages = entries
.filter((entry) => entry.isDirectory() && !entry.name.startsWith('.'))
.flatMap((entry) => {
const metadataPath = path.join(packagesDir, entry.name, 'seed', 'metadata.json')
if (!fs.existsSync(metadataPath)) {
return []
}
const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf8'))
return [
{
packageId: metadata.packageId,
name: metadata.name,
version: metadata.version,
description: metadata.description,
author: metadata.author,
category: metadata.category,
dependencies: metadata.dependencies ?? [],
exports: metadata.exports ?? { components: [] },
},
]
})
.sort((a, b) => a.packageId.localeCompare(b.packageId))
const output = {
generatedAt: new Date().toISOString(),
packages,
}
const outputPath = path.join(packagesDir, 'index.json')
fs.writeFileSync(outputPath, JSON.stringify(output, null, 2) + '\n')
console.log(`Wrote ${outputPath} (${packages.length} packages)`)