option to use choco with gsudo on windows (#463)
This commit is contained in:
@@ -129,6 +129,7 @@ pub struct Vagrant {
|
||||
pub struct Windows {
|
||||
accept_all_updates: Option<bool>,
|
||||
self_rename: Option<bool>,
|
||||
use_gsudo_with_choco: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Default, Debug)]
|
||||
@@ -519,6 +520,16 @@ impl Config {
|
||||
.unwrap_or(false)
|
||||
}
|
||||
|
||||
/// Whether to use gsudo command with choco if available
|
||||
#[allow(dead_code)]
|
||||
pub fn use_gsudo_with_choco(&self) -> bool {
|
||||
self.config_file
|
||||
.windows
|
||||
.as_ref()
|
||||
.and_then(|w| w.use_gsudo_with_choco)
|
||||
.unwrap_or(false)
|
||||
}
|
||||
|
||||
/// Whether Brew cask should be greedy
|
||||
#[allow(dead_code)]
|
||||
pub fn brew_cask_greedy(&self) -> bool {
|
||||
|
||||
@@ -3,19 +3,31 @@ use crate::execution_context::ExecutionContext;
|
||||
use crate::executor::{CommandExt, RunType};
|
||||
use crate::powershell;
|
||||
use crate::terminal::print_separator;
|
||||
use crate::utils::require;
|
||||
use crate::utils::{require, which};
|
||||
use anyhow::Result;
|
||||
use std::process::Command;
|
||||
|
||||
pub fn run_chocolatey(ctx: &ExecutionContext) -> Result<()> {
|
||||
let choco = require("choco")?;
|
||||
let yes = ctx.config().yes();
|
||||
let use_gsudo = ctx.config().use_gsudo_with_choco();
|
||||
|
||||
print_separator("Chocolatey");
|
||||
|
||||
let mut command = ctx.run_type().execute(&choco);
|
||||
let mut cmd = choco;
|
||||
let mut args = vec!["upgrade", "all"];
|
||||
|
||||
command.args(&["upgrade", "all"]);
|
||||
if use_gsudo {
|
||||
let gsudo = which("gsudo");
|
||||
if let Some(gsudo) = gsudo {
|
||||
cmd = gsudo;
|
||||
args = vec!["choco", "upgrade", "all"];
|
||||
}
|
||||
}
|
||||
|
||||
let mut command = ctx.run_type().execute(&cmd);
|
||||
|
||||
command.args(&args);
|
||||
|
||||
if yes {
|
||||
command.arg("--yes");
|
||||
|
||||
Reference in New Issue
Block a user