Added support to 'mamba' (alternative to 'conda' with the exact same commands/interface) (#395)

This commit is contained in:
Brian Riccardi
2023-04-17 16:19:59 +02:00
committed by GitHub
parent 29f0d229d3
commit ac6330fac8
3 changed files with 30 additions and 4 deletions

View File

@@ -116,6 +116,7 @@ pub enum Step {
Helix,
Krew,
Macports,
Mamba,
Mas,
Micro,
Myrepos,

View File

@@ -368,6 +368,7 @@ For more information about this issue see https://askubuntu.com/questions/110969
runner.execute(Step::Vcpkg, "vcpkg", || generic::run_vcpkg_update(&ctx))?;
runner.execute(Step::Pipx, "pipx", || generic::run_pipx_update(run_type))?;
runner.execute(Step::Conda, "conda", || generic::run_conda_update(&ctx))?;
runner.execute(Step::Mamba, "mamba", || generic::run_mamba_update(&ctx))?;
runner.execute(Step::Pip3, "pip3", || generic::run_pip3_update(run_type))?;
runner.execute(Step::PipReview, "pip-review", || generic::run_pip_review_update(&ctx))?;
runner.execute(Step::Pipupgrade, "pipupgrade", || generic::run_pipupgrade_update(&ctx))?;

View File

@@ -17,6 +17,7 @@ use crate::execution_context::ExecutionContext;
use crate::executor::{ExecutorOutput, RunType};
use crate::terminal::{print_separator, shell};
use crate::utils::{self, require, require_option, which, PathExt};
use crate::Step;
use crate::{
error::{SkipStep, StepFailed, TopgradeError},
terminal::print_warning,
@@ -332,10 +333,33 @@ pub fn run_conda_update(ctx: &ExecutionContext) -> Result<()> {
print_separator("Conda");
ctx.run_type()
.execute(conda)
.args(["update", "--all", "-y"])
.status_checked()
let mut command = ctx.run_type().execute(conda);
command.args(["update", "--all"]);
if ctx.config().yes(Step::Conda) {
command.arg("--yes");
}
command.status_checked()
}
pub fn run_mamba_update(ctx: &ExecutionContext) -> Result<()> {
let mamba = utils::require("mamba")?;
let output = Command::new("mamba")
.args(["config", "--show", "auto_activate_base"])
.output_checked_utf8()?;
debug!("Mamba output: {}", output.stdout);
if output.stdout.contains("False") {
return Err(SkipStep("auto_activate_base is set to False".to_string()).into());
}
print_separator("Mamba");
let mut command = ctx.run_type().execute(mamba);
command.args(["update", "--all"]);
if ctx.config().yes(Step::Mamba) {
command.arg("--yes");
}
command.status_checked()
}
pub fn run_pip3_update(run_type: RunType) -> Result<()> {