mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-05-07 12:40:04 +00:00
feat: Impl new option --continue-on-failure
(#1559)
* feat: Impl new option `--continue-on-failure` Resolve #1548 Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Add new e2e-tests continue-on-failure Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Rm dup line ion `e2e-tests/live.sh` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Fix shellcheck Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Fix `BinstallError::crate_errors` if `errors.len()` is 1 In that case, it should return `Some(Self::CrateContext(_))` instead of `Some(Self::Errors(_))` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Add more tests to `e2e-tests/continue-on-failure.sh` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Propagate crate errors on `confirm()` err Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Test having two errors in `e2e-tests/continue-on-failure.sh` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> --------- Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
f5da25cc56
commit
c08b8d232a
8 changed files with 365 additions and 60 deletions
|
@ -51,6 +51,12 @@ impl Resolution {
|
|||
|
||||
impl ResolutionFetch {
|
||||
pub fn install(self, opts: &Options) -> Result<CrateInfo, BinstallError> {
|
||||
let crate_name = self.name.clone();
|
||||
self.install_inner(opts)
|
||||
.map_err(|err| err.crate_context(crate_name))
|
||||
}
|
||||
|
||||
fn install_inner(self, opts: &Options) -> Result<CrateInfo, BinstallError> {
|
||||
type InstallFp = fn(&bins::BinFile) -> Result<(), bins::Error>;
|
||||
|
||||
let (install_bin, install_link): (InstallFp, InstallFp) = match (opts.no_track, opts.force)
|
||||
|
@ -126,6 +132,13 @@ impl ResolutionFetch {
|
|||
|
||||
impl ResolutionSource {
|
||||
pub async fn install(self, opts: Arc<Options>) -> Result<(), BinstallError> {
|
||||
let crate_name = self.name.clone();
|
||||
self.install_inner(opts)
|
||||
.await
|
||||
.map_err(|err| err.crate_context(crate_name))
|
||||
}
|
||||
|
||||
async fn install_inner(self, opts: Arc<Options>) -> Result<(), BinstallError> {
|
||||
let target = if let Some(targets) = opts.desired_targets.get_initialized() {
|
||||
Some(targets.first().ok_or(BinstallError::NoViableTargets)?)
|
||||
} else {
|
||||
|
@ -171,7 +184,7 @@ impl ResolutionSource {
|
|||
cmd.arg("--no-track");
|
||||
}
|
||||
|
||||
debug!("Running `{}`", format_cmd(&cmd),);
|
||||
debug!("Running `{}`", format_cmd(&cmd));
|
||||
|
||||
if !opts.dry_run {
|
||||
let mut child = opts
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue