learning_ai_common_plat/scripts/_docker-prep-strip.js
saravanakumardb1 a418a23e56 feat(scripts): canonical hardened docker-prep + sync tooling (Phase B7)
Promotes docker-prep.sh to canonical home in common-plat with full Phase B
hardening from the docker-build-optimization-roadmap:

- B1: --dry-run mode (lists actions, no side effects)
- B2: idempotency guard (refuses to run if *.bak exists, --force to bypass)
- B5: trap-based auto-restore on error (--keep to disable)
- B6: standardized header + usage block
- B7: canonical home + sync + drift-check (mirrors npmrc.template pattern)
- B8: --strip-overrides for safety-net cleanup
- New: --check mode for CI-friendly state verification
- New: auto-discovers package.json files with @bytelyst/* deps
- New: portable sed -i (BSD on macOS, GNU on Linux)
- New: preserves .docker-deps/.gitkeep on clear (fixes earlier regression)
- New: 2 small JS helpers (_docker-prep-*.js) avoid bash 3.2 heredoc quirks

Verified on clock + peakpulse: dry-run, pack, check, idempotency guard,
restore, and post-restore git status all clean.
2026-05-27 03:48:46 -07:00

16 lines
673 B
JavaScript

// Helper for docker-prep.sh --strip-overrides — remove @bytelyst/* keys from
// pnpm.overrides. Reads: PKG_FILE_ARG (path). Writes: $PKG_FILE_ARG in place.
const fs = require('fs');
const f = process.env.PKG_FILE_ARG;
const p = JSON.parse(fs.readFileSync(f, 'utf8'));
if (p.pnpm && p.pnpm.overrides) {
const filtered = {};
for (const k of Object.keys(p.pnpm.overrides)) {
if (!k.startsWith('@bytelyst/')) filtered[k] = p.pnpm.overrides[k];
}
if (Object.keys(filtered).length === 0) delete p.pnpm.overrides;
else p.pnpm.overrides = filtered;
if (Object.keys(p.pnpm).length === 0) delete p.pnpm;
fs.writeFileSync(f, JSON.stringify(p, null, 2) + '\n');
}