diff: Only color output when stdout is a tty

If we're redirecting the output somewhere, we likely don't want to
have ANSI codes in the middle of our diff output.
This commit is contained in:
Mustafa Quraish 2021-09-23 14:32:20 -04:00 committed by Andreas Kling
parent 6f423ed26e
commit 07419b8931
Notes: sideshowbarker 2024-07-18 03:29:59 +09:00

View file

@ -61,13 +61,23 @@ int main(int argc, char** argv)
if (num_added > 1)
sb.appendff(",{}", target_start + num_added - 1);
bool color_output = isatty(STDOUT_FILENO);
outln("Hunk: {}", sb.build());
for (const auto& line : hunk.removed_lines)
outln("\033[31;1m< {}\033[0m", line);
for (const auto& line : hunk.removed_lines) {
if (color_output)
outln("\033[31;1m< {}\033[0m", line);
else
outln("< {}", line);
}
if (num_added > 0 && num_removed > 0)
outln("---");
for (const auto& line : hunk.added_lines)
outln("\033[32;1m> {}\033[0m", line);
for (const auto& line : hunk.added_lines) {
if (color_output)
outln("\033[32;1m> {}\033[0m", line);
else
outln("> {}", line);
}
}
return hunks.is_empty() ? 0 : 1;