#!/usr/bin/env bun /** * Bulk migration: runtimeEnv → env, global logger → createLogger(env) */ import { readFileSync, writeFileSync } from "node:fs"; import { globSync } from "bun:fs"; const SRC = "/Volumes/sker/autumn/server/src"; const files = globSync(`${SRC}/**/*.ts`).filter( (f) => !f.includes("node_modules") && !f.includes(".test."), ); let changed = 0; for (const f of files) { let content = readFileSync(f, "utf-8"); const original = content; let modified = false; // ── Remove runtimeEnv imports ── if (content.match(/import\s+\{[^}]*runtimeEnv[^}]*\}\s+from\s+["'][^"']*envUtils[^"']*["'];?/)) { content = content.replace( /^import\s+\{[^}]*runtimeEnv[^}]*\}\s+from\s+["'][^"']*envUtils[^"']*["'];?\s*\n/gm, "", ); modified = true; } // ── Replace runtimeEnv.XXX → env.XXX ── if (content.includes("runtimeEnv.")) { content = content.replace(/runtimeEnv\./g, "env."); modified = true; } // ── Replace import { logger } with import { createLogger } ── if (content.match(/import\s+\{[^}]*\blogger\b[^}]*\}\s+from\s+["'][^"']*logtailUtils[^"']*["'];?/)) { // Add createLogger to the existing import, or create new import if (content.includes("import { createLogger }")) { // Already has createLogger, just remove logger content = content.replace( /import\s+\{([^}]*)logger([^}]*)\}\s+from\s+["'][^"']*logtailUtils[^"']*["'];?/g, (_, p1, p2) => { const parts = [p1.trim(), p2.trim()].filter(Boolean).join(", "); return parts ? `import { ${parts} } from "@/external/logtail/logtailUtils.js";` : 'import { createLogger } from "@/external/logtail/logtailUtils.js";'; }, ); } else { content = content.replace( /import\s+\{([^}]*)logger\b([^}]*)\}\s+from\s+["'][^"']*logtailUtils[^"']*["'];?/g, (_, p1, p2) => { const hasOther = (p1 + p2).replace(/\s+/g, "").length > 0; if (hasOther) { return `import { createLogger, ${[p1, p2].map(s => s.trim()).filter(Boolean).join(", ")} } from "@/external/logtail/logtailUtils.js";`; } return 'import { createLogger } from "@/external/logtail/logtailUtils.js";'; }, ); } modified = true; } if (modified) { writeFileSync(f, content); changed++; console.log(`✓ ${f.replace(SRC, "")}`); } } console.log(`\nChanged ${changed} files.`);