From 31db02d95a9524ca18fff7c1a7b30e3c2b73aee9 Mon Sep 17 00:00:00 2001 From: Roey Darwish Dror Date: Wed, 30 Dec 2020 10:35:50 +0200 Subject: [PATCH] Split brew cask into a seperate step (fix #588) (#593) --- src/config.rs | 3 ++- src/main.rs | 18 +++++++++++----- src/steps/os/unix.rs | 49 +++++++++++++++++++++++++++++--------------- 3 files changed, 48 insertions(+), 22 deletions(-) diff --git a/src/config.rs b/src/config.rs index 6dc2c95f..99d0a516 100644 --- a/src/config.rs +++ b/src/config.rs @@ -65,7 +65,8 @@ type Commands = BTreeMap; pub enum Step { Asdf, Atom, - Brew, + BrewCask, + BrewFormula, Cargo, Chocolatey, Choosenim, diff --git a/src/main.rs b/src/main.rs index 80479b55..bca6f2af 100644 --- a/src/main.rs +++ b/src/main.rs @@ -137,7 +137,9 @@ fn run() -> Result<()> { linux::run_etc_update(sudo.as_ref(), run_type) })?; - runner.execute(Step::Brew, "Brew", || unix::run_brew(&ctx, unix::BrewVariant::Linux))?; + runner.execute(Step::BrewFormula, "Brew", || { + unix::run_brew_formula(&ctx, unix::BrewVariant::Linux) + })?; } #[cfg(windows)] @@ -148,11 +150,17 @@ fn run() -> Result<()> { #[cfg(target_os = "macos")] { - runner.execute(Step::Brew, "Brew (ARM)", || { - unix::run_brew(&ctx, unix::BrewVariant::MacArm) + runner.execute(Step::BrewFormula, "Brew (ARM)", || { + unix::run_brew_formula(&ctx, unix::BrewVariant::MacArm) })?; - runner.execute(Step::Brew, "Brew (Intel)", || { - unix::run_brew(&ctx, unix::BrewVariant::MacIntel) + runner.execute(Step::BrewFormula, "Brew (Intel)", || { + unix::run_brew_formula(&ctx, unix::BrewVariant::MacIntel) + })?; + runner.execute(Step::BrewCask, "Brew Cask (ARM)", || { + unix::run_brew_cask(&ctx, unix::BrewVariant::MacArm) + })?; + runner.execute(Step::BrewCask, "Brew Cask (Intel)", || { + unix::run_brew_cask(&ctx, unix::BrewVariant::MacIntel) })?; runner.execute(Step::MacPorts, "MacPorts", || macos::run_macports(&ctx))?; runner.execute(Step::MicrosoftAutoUpdate, "Microsoft AutoUpdate", || { diff --git a/src/steps/os/unix.rs b/src/steps/os/unix.rs index fc27ac9f..987c50e7 100644 --- a/src/steps/os/unix.rs +++ b/src/steps/os/unix.rs @@ -2,7 +2,9 @@ use crate::error::SkipStep; use crate::error::TopgradeError; use crate::execution_context::ExecutionContext; -use crate::executor::{CommandExt, Executor, ExecutorExitStatus, RunType}; +#[cfg(target_os = "macos")] +use crate::executor::CommandExt; +use crate::executor::{Executor, ExecutorExitStatus, RunType}; use crate::terminal::{print_separator, print_warning}; use crate::utils::{require, PathExt}; use anyhow::Result; @@ -85,37 +87,52 @@ pub fn run_oh_my_fish(ctx: &ExecutionContext) -> Result<()> { ctx.run_type().execute(&fish).args(&["-c", "omf update"]).check_run() } -pub fn run_brew(ctx: &ExecutionContext, variant: BrewVariant) -> Result<()> { +pub fn run_brew_formula(ctx: &ExecutionContext, variant: BrewVariant) -> Result<()> { require(variant.binary_name())?; print_separator(variant.step_title()); let run_type = ctx.run_type(); + variant.execute(run_type).arg("update").check_run()?; + variant + .execute(run_type) + .args(&["upgrade", "--ignore-pinned", "--formula"]) + .check_run()?; + + if ctx.config().cleanup() { + variant.execute(run_type).arg("cleanup").check_run()?; + } + + Ok(()) +} + +#[cfg(target_os = "macos")] +pub fn run_brew_cask(ctx: &ExecutionContext, variant: BrewVariant) -> Result<()> { + require(variant.binary_name())?; + print_separator(format!("{} - Cask", variant.step_title())); + let run_type = ctx.run_type(); + let cask_upgrade_exists = variant .execute(RunType::Wet) .args(&["--repository", "buo/cask-upgrade"]) .check_output() .map(|p| Path::new(p.trim()).exists())?; - let mut brew_args = vec!["upgrade", "--ignore-pinned"]; + let mut brew_args = vec![]; if cask_upgrade_exists { - brew_args.push("--formula") - } else if ctx.config().brew_cask_greedy() { - brew_args.push("--greedy"); - } - - variant.execute(run_type).arg("update").check_run()?; - variant.execute(run_type).args(&brew_args).check_run()?; - - if cask_upgrade_exists { - let mut args = vec!["cu", "-y"]; + brew_args.extend(&["cu", "-y"]); if ctx.config().brew_cask_greedy() { - args.push("-a"); + brew_args.push("-a"); + } + } else { + brew_args.extend(&["--cask", "upgrade"]); + if ctx.config().brew_cask_greedy() { + brew_args.push("--greedy"); } - - variant.execute(run_type).args(&args).check_run()?; } + variant.execute(run_type).args(&brew_args).check_run()?; + if ctx.config().cleanup() { variant.execute(run_type).arg("cleanup").check_run()?; }