feat: füge Skript hinzu, um 'review: true' in Skripten zu ersetzen und unterstütze einen Dry-Run-Modus
All checks were successful
Deploy to production / deploy (push) Successful in 18s

This commit is contained in:
Torsten Schulz (local)
2026-05-26 11:02:29 +02:00
parent 9b9afac66e
commit c44eb93f33
2 changed files with 59 additions and 1 deletions

View File

@@ -0,0 +1,50 @@
#!/usr/bin/env node
import fs from 'fs/promises';
import path from 'path';
const ROOT = path.resolve(process.cwd());
const SEARCH_DIR = path.join(ROOT, 'backend', 'scripts');
const exts = new Set(['.js', '.mjs', '.cjs', '.json']);
const APPLY = process.argv.includes('--apply');
async function* walk(dir) {
const entries = await fs.readdir(dir, { withFileTypes: true });
for (const e of entries) {
const full = path.join(dir, e.name);
if (e.isDirectory()) {
yield* walk(full);
} else if (exts.has(path.extname(e.name))) {
yield full;
}
}
}
const re = /\breview\s*:\s*true\b/g;
const reCompact = /\breview\s*:\s*true\s*,?/g;
let files = [];
for await (const f of walk(SEARCH_DIR)) files.push(f);
let found = 0;
for (const file of files) {
const txt = await fs.readFile(file, 'utf8');
if (!re.test(txt)) continue;
found++;
const newTxt = txt.replace(reCompact, "type: 'review',");
console.log('---', file);
const oldMatches = txt.match(/.{0,80}review\s*:\s*true.{0,80}/g) || [];
const newMatches = newTxt.match(/.{0,80}type:\s*'review'.{0,80}/g) || [];
for (let i = 0; i < Math.max(oldMatches.length, newMatches.length); i++) {
console.log(' -', (oldMatches[i] || '').trim());
console.log(' +', (newMatches[i] || '').trim());
}
if (APPLY) {
await fs.writeFile(file, newTxt, 'utf8');
console.log(' [wrote]');
} else {
console.log(' [dry-run]');
}
}
console.log(`${found} file(s) with \`review: true\` ${APPLY ? 'updated' : 'would be changed (dry-run)'}.`);