54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
#!/usr/bin/env node
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
import { runCommandSync } from './utils/command-runtime.mjs';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
const clientRoot = path.resolve(__dirname, '..');
|
|
|
|
function findWorkspaceRoot(startDir) {
|
|
let current = path.resolve(startDir);
|
|
while (true) {
|
|
if (fs.existsSync(path.join(current, 'pnpm-workspace.yaml'))) {
|
|
return current;
|
|
}
|
|
const parent = path.dirname(current);
|
|
if (parent === current) {
|
|
return null;
|
|
}
|
|
current = parent;
|
|
}
|
|
}
|
|
|
|
function hasMakePackage(workspaceRoot) {
|
|
try {
|
|
const packageJson = JSON.parse(fs.readFileSync(path.join(workspaceRoot, 'apps', 'axhub-make', 'package.json'), 'utf8'));
|
|
return packageJson?.name === '@axhub/make';
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
const workspaceRoot = findWorkspaceRoot(clientRoot);
|
|
if (!workspaceRoot || !hasMakePackage(workspaceRoot)) {
|
|
process.exit(0);
|
|
}
|
|
|
|
const result = runCommandSync({
|
|
command: 'pnpm',
|
|
args: ['--filter', '@axhub/make', 'vendor:sync'],
|
|
cwd: workspaceRoot,
|
|
timeoutMs: 10 * 60 * 1000,
|
|
maxBuffer: 20 * 1024 * 1024,
|
|
});
|
|
|
|
if (result.status !== 0) {
|
|
const stderr = result.stderr.trim();
|
|
const stdout = result.stdout.trim();
|
|
process.stderr.write(`${stderr || stdout || 'Failed to sync Make vendor packages'}\n`);
|
|
process.exit(result.status ?? 1);
|
|
}
|