Merge pull request #223 from NobodyXu/fix/join-err

Fix: join err handling, unify it using `BinstallError`
This commit is contained in:
Jiahao XU 2022-07-22 11:29:21 +10:00 committed by GitHub
commit 6964eee5d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 14 deletions

View file

@ -133,7 +133,6 @@ enum MainExit {
Success(Duration),
Error(BinstallError),
Report(miette::Report),
JoinErr(JoinError),
}
impl Termination for MainExit {
@ -149,11 +148,6 @@ impl Termination for MainExit {
eprintln!("{err:?}");
ExitCode::from(16)
}
Self::JoinErr(err) => {
error!("Fatal error:");
eprintln!("{err:?}");
ExitCode::from(17)
}
}
}
}
@ -172,13 +166,16 @@ fn main() -> MainExit {
let done = start.elapsed();
debug!("run time: {done:?}");
result.map_or_else(MainExit::JoinErr, |res| {
res.map(|_| MainExit::Success(done)).unwrap_or_else(|err| {
err.downcast::<BinstallError>()
.map(MainExit::Error)
.unwrap_or_else(MainExit::Report)
})
})
result.map_or_else(
|join_err| MainExit::Error(BinstallError::from(join_err)),
|res| {
res.map(|_| MainExit::Success(done)).unwrap_or_else(|err| {
err.downcast::<BinstallError>()
.map(MainExit::Error)
.unwrap_or_else(MainExit::Report)
})
},
)
}
async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> {