difftreelog
feat preserve logs
in: trunk
1 file changed
cmds/fleet/src/command.rsdiffbeforeafterboth196 }196 }197197198 async fn run(&mut self) -> Result<()> {198 async fn run(&mut self) -> Result<()> {199 self.inherit_stdio();199 self.stderr(Stdio::piped());200 self.stdout(Stdio::piped());200 let out = self.spawn()?.wait_with_output().await?;201 let mut child = self.spawn()?;202 let mut stderr = child.stderr.take().unwrap();203 let mut stdout = child.stdout.take().unwrap();204 let mut err = FramedRead::new(&mut stderr, LinesCodec::new());205 let mut out = FramedRead::new(&mut stdout, LinesCodec::new());206 loop {207 select! {208 e = err.next() => {201 if !out.status.success() {209 if let Some(e) = e {210 warn!("{}", e?);211 }212 },213 o = out.next() => {214 if let Some(o) = o {215 info!("{}", o?);216 }217 },218 code = child.wait() => {219 let code = code?;220 if !code.success() {202 anyhow::bail!("command ({:?}) failed with status {}", self, out.status);221 anyhow::bail!("command ({:?}) failed with status {}", self, code);203 }222 }223 break;224 }225 }226 }204 Ok(())227 Ok(())205 }228 }206229