mirror of
https://github.com/Xevion/xevion.dev.git
synced 2026-01-31 12:26:39 -06:00
fix: suppress progress updates when not in TTY
Prevents escape codes from polluting CI/non-interactive logs
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user