fix: suppress progress updates when not in TTY

Prevents escape codes from polluting CI/non-interactive logs
This commit is contained in:
2026-01-13 16:45:20 -06:00
parent a6cc0b8e66
commit a849f91264
+8 -7
View File
@@ -30,6 +30,7 @@ check:
{ name: "rustfmt", cmd: ["cargo", "fmt", "--check"] }, { name: "rustfmt", cmd: ["cargo", "fmt", "--check"] },
]; ];
const isTTY = process.stderr.isTTY;
const start = Date.now(); const start = Date.now();
const remaining = new Set(checks.map(c => c.name)); const remaining = new Set(checks.map(c => c.name));
const results = []; const results = [];
@@ -53,12 +54,12 @@ check:
return { ...check, stdout, stderr, exitCode: proc.exitCode, elapsed }; return { ...check, stdout, stderr, exitCode: proc.exitCode, elapsed };
}); });
// Progress updater // Progress updater (only for interactive terminals)
const interval = setInterval(() => { const interval = isTTY ? setInterval(() => {
const elapsed = ((Date.now() - start) / 1000).toFixed(1); const elapsed = ((Date.now() - start) / 1000).toFixed(1);
const tasks = Array.from(remaining).join(", "); const tasks = Array.from(remaining).join(", ");
process.stderr.write(`\r\x1b[K${elapsed}s [${tasks}]`); process.stderr.write(`\r\x1b[K${elapsed}s [${tasks}]`);
}, 100); }, 100) : null;
// Stream outputs as they complete // Stream outputs as they complete
let anyFailed = false; let anyFailed = false;
@@ -68,18 +69,18 @@ check:
if (result.exitCode !== 0) { if (result.exitCode !== 0) {
anyFailed = true; anyFailed = true;
process.stderr.write(`\r\x1b[K`); if (isTTY) process.stderr.write(`\r\x1b[K`);
process.stdout.write(`${result.name} (${result.elapsed}s)\n`); process.stdout.write(`${result.name} (${result.elapsed}s)\n`);
if (result.stdout) process.stdout.write(result.stdout); if (result.stdout) process.stdout.write(result.stdout);
if (result.stderr) process.stderr.write(result.stderr); if (result.stderr) process.stderr.write(result.stderr);
} else { } else {
process.stderr.write(`\r\x1b[K`); if (isTTY) process.stderr.write(`\r\x1b[K`);
process.stdout.write(`${result.name} (${result.elapsed}s)\n`); process.stdout.write(`${result.name} (${result.elapsed}s)\n`);
} }
} }
clearInterval(interval); if (interval) clearInterval(interval);
process.stderr.write(`\r\x1b[K`); if (isTTY) process.stderr.write(`\r\x1b[K`);
process.exit(anyFailed ? 1 : 0); process.exit(anyFailed ? 1 : 0);
format: format: