git.delta.rocks / jrsonnet / refs/commits / 590ae3fadf8f

difftreelog

feat preserve logs

Yaroslav Bolyukin2022-08-28parent: #ec2473c.patch.diff
in: trunk

1 file changed

modifiedcmds/fleet/src/command.rsdiffbeforeafterboth
196 }196 }
197197
198 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