Я хотел бы захватить вывод из другого процесса (например, git status
), обработать его и распечатать со всеми стилями (жирный, курсив, подчеркивание) и цветами. Для меня очень важно продолжить обработку этого String
, я не хочу только печатать его.
В мире Unix, я думаю, это будет связано с escape-кодами, я не уверен в мире Windows, но для меня это тоже важно.
Я знаю, как это сделать без цветов:
fn exec_git() -> String {
let output = Command::new("git")
.arg("status")
.output()
.expect("failed to execute process");
String::from_utf8_lossy(&output.stdout).into_owned()
}
Может быть, мне следует использовать spawn
вместо этого?
git
, заставив его думать, что он выводит на терминал (и, таким образом, раскрасить его вывод), или вы довольствуетесь простой передачей флага/конфигурации в git, который заставит его использовать цвета, не полагаясь на обнаружение терминала? - person Matthieu M.   schedule 30.12.2016git
кажется хорошей идеей. Прямо сейчасgit
проверяет, является ли поток TTY, верно? (что-то вродеif (uv_guess_handle(1) == UV_TTY)
в libuv) Хорошо - допустим, я его обману (пока не знаю, как, но рано или поздно это решу). Тогда мой вывод будет содержать escape-коды, и их печать будет окрашивать окончательный вывод? - person Wojciech Polak   schedule 30.12.2016