learning_ai_invt_trdg/scripts/check-local-packages.cjs

64 lines
1.9 KiB
JavaScript
Executable File

#!/usr/bin/env node
const fs = require('node:fs');
const path = require('node:path');
const repoRoot = path.resolve(__dirname, '..');
const commonPlatRoot =
process.env.BYTELYST_COMMON_PLAT_ROOT ||
path.resolve(repoRoot, '..', 'learning_ai_common_plat');
const commonPackagesRoot = path.join(commonPlatRoot, 'packages');
const manifests = [
path.join(repoRoot, 'package.json'),
path.join(repoRoot, 'web', 'package.json'),
path.join(repoRoot, 'backend', 'package.json'),
path.join(repoRoot, 'mobile', 'package.json'),
];
function readJson(filePath) {
return JSON.parse(fs.readFileSync(filePath, 'utf8'));
}
function bytelystDependencies(manifestPath) {
const manifest = readJson(manifestPath);
const sections = [
manifest.dependencies,
manifest.devDependencies,
manifest.optionalDependencies,
];
return sections
.flatMap((section) => Object.keys(section || {}))
.filter((name) => name.startsWith('@bytelyst/'));
}
if (!fs.existsSync(commonPackagesRoot)) {
console.error(`Missing common platform packages directory: ${commonPackagesRoot}`);
console.error('Set BYTELYST_COMMON_PLAT_ROOT if your sibling checkout lives elsewhere.');
process.exit(1);
}
const missing = new Set();
for (const manifestPath of manifests) {
if (!fs.existsSync(manifestPath)) continue;
for (const packageName of bytelystDependencies(manifestPath)) {
const packageDir = packageName.replace('@bytelyst/', '');
const packageJsonPath = path.join(commonPackagesRoot, packageDir, 'package.json');
if (!fs.existsSync(packageJsonPath)) {
missing.add(`${packageName} -> ${packageJsonPath}`);
}
}
}
if (missing.size > 0) {
console.error('Missing local ByteLyst package checkouts:');
for (const item of missing) {
console.error(`- ${item}`);
}
process.exit(1);
}
console.log(`Local ByteLyst packages resolved from ${commonPackagesRoot}`);