From 080bab6b17af7b5c1b7c851ee3d8d7848b98f7a7 Mon Sep 17 00:00:00 2001 From: Kalle Fagerberg Date: Tue, 20 Jan 2026 22:04:15 +0100 Subject: [PATCH] Pipe emulator output instead of buffering it --- src/commands/emulator.rs | 6 +++--- src/langs.rs | 10 +++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/commands/emulator.rs b/src/commands/emulator.rs index d80c623..5ce3505 100644 --- a/src/commands/emulator.rs +++ b/src/commands/emulator.rs @@ -1,5 +1,5 @@ use crate::args::EmulatorArgs; -use crate::langs::check_output; +use crate::langs::check_exit_status; use anyhow::{Context, Result, bail}; use flate2::read::GzDecoder; use std::fs::File; @@ -20,8 +20,8 @@ pub fn cmd_emulator(vfs: &Path, args: &EmulatorArgs) -> Result<()> { download_emulator(&bin_path).context("download emulator")?; } println!("⌛ running..."); - let output = Command::new(bin_path).args(&args.args).output()?; - check_output(&output).context("run emulator")?; + let exit_status = Command::new(bin_path).args(&args.args).status()?; + check_exit_status(exit_status).context("run emulator")?; Ok(()) } diff --git a/src/langs.rs b/src/langs.rs index ca2cd1e..66c0ac5 100644 --- a/src/langs.rs +++ b/src/langs.rs @@ -7,7 +7,7 @@ use std::env::temp_dir; use std::fs::File; use std::io::Write; use std::path::{Path, PathBuf}; -use std::process::{Command, Output}; +use std::process::{Command, ExitStatus, Output}; pub fn build_bin(config: &Config, args: &BuildArgs) -> anyhow::Result<()> { // Don't build the binary if it will be copied directly in "files". @@ -511,8 +511,12 @@ pub fn path_to_utf8(path: &Path) -> anyhow::Result<&str> { pub fn check_output(output: &Output) -> anyhow::Result<()> { std::io::stdout().write_all(&output.stdout)?; std::io::stderr().write_all(&output.stderr)?; - if !output.status.success() { - let code = output.status.code().unwrap_or(1); + check_exit_status(output.status) +} + +pub fn check_exit_status(output: ExitStatus) -> anyhow::Result<()> { + if !output.success() { + let code = output.code().unwrap_or(1); bail!("subprocess exited with status code {code}"); } Ok(())