feat(M4): Reusable code abstractions and dead-code removal
This commit is contained in:
@@ -487,8 +487,12 @@ async function generateReviewerRuntimePi(repoRoot, writeRoot) {
|
||||
|
||||
/**
|
||||
* Clear generated content in a root, preserving:
|
||||
* - node_modules (installed by pnpm)
|
||||
* - node_modules (installed by pnpm) — at any depth
|
||||
* - .generated-manifest.json (will be rewritten after generation)
|
||||
*
|
||||
* Subdirectories are always recursed into before removal so that
|
||||
* node_modules trees nested at any depth (e.g. scripts/node_modules inside
|
||||
* atlassian or web-automation variants) are preserved.
|
||||
*/
|
||||
async function clearGeneratedRoot(rootDir) {
|
||||
let entries;
|
||||
@@ -501,7 +505,18 @@ async function clearGeneratedRoot(rootDir) {
|
||||
for (const entry of entries) {
|
||||
if (entry.name === "node_modules") continue;
|
||||
if (entry.name === MANIFEST_FILENAME) continue;
|
||||
await rm(path.join(rootDir, entry.name), { recursive: true, force: true });
|
||||
const fullPath = path.join(rootDir, entry.name);
|
||||
if (entry.isDirectory()) {
|
||||
// Always recurse so node_modules at any depth is preserved.
|
||||
await clearGeneratedRoot(fullPath);
|
||||
// Remove the directory only if nothing protected remains inside it.
|
||||
const remaining = await readdir(fullPath).catch(() => []);
|
||||
if (remaining.length === 0) {
|
||||
await rm(fullPath, { force: true });
|
||||
}
|
||||
} else {
|
||||
await rm(fullPath, { force: true });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -521,6 +536,7 @@ const SCRIPTS_SKILL_CONFIGS = {
|
||||
"check-install.js",
|
||||
"extract.js",
|
||||
"flow.ts",
|
||||
"lib",
|
||||
"scan-local-app.ts",
|
||||
"scrape.ts",
|
||||
"test-full.ts",
|
||||
|
||||
Reference in New Issue
Block a user