35 lines
969 B
JavaScript
35 lines
969 B
JavaScript
#!/usr/bin/env node
|
|
|
|
import { access, mkdir, rename, rm } from 'node:fs/promises';
|
|
import path from 'node:path';
|
|
|
|
const root = process.cwd();
|
|
const generated = path.join(root, 'apps', 'web', '.next');
|
|
const quarantineRoot = path.join(root, '.mosaic-test-work', 'generated-quarantine');
|
|
|
|
try {
|
|
await access(generated);
|
|
} catch (error) {
|
|
if (error.code === 'ENOENT') process.exit(0);
|
|
throw error;
|
|
}
|
|
|
|
await mkdir(quarantineRoot, { recursive: true });
|
|
const quarantine = path.join(quarantineRoot, `web-next-${Date.now()}-${process.pid}`);
|
|
try {
|
|
await rename(generated, quarantine);
|
|
} catch (error) {
|
|
console.error(
|
|
`MOSAIC_GENERATED_CLEAN_FAILED: could not quarantine apps/web/.next. Fix: sudo rm -rf '${generated}', then rerun pnpm preflight`,
|
|
);
|
|
throw error;
|
|
}
|
|
|
|
try {
|
|
await rm(quarantine, { recursive: true, force: true });
|
|
} catch {
|
|
console.warn(
|
|
`Generated state was deactivated but could not be deleted; quarantined at ${quarantine}`,
|
|
);
|
|
}
|