Split brew cask into a seperate step (fix #588) (#593)

This commit is contained in:
Roey Darwish Dror
2020-12-30 10:35:50 +02:00
committed by GitHub
parent 1e66a47764
commit 31db02d95a
3 changed files with 48 additions and 22 deletions

View File

@@ -65,7 +65,8 @@ type Commands = BTreeMap<String, String>;
pub enum Step {
Asdf,
Atom,
Brew,
BrewCask,
BrewFormula,
Cargo,
Chocolatey,
Choosenim,

View File

@@ -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", || {

View File

@@ -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.extend(&["cu", "-y"]);
if ctx.config().brew_cask_greedy() {
brew_args.push("-a");
}
} else {
brew_args.extend(&["--cask", "upgrade"]);
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"];
if ctx.config().brew_cask_greedy() {
args.push("-a");
}
variant.execute(run_type).args(&args).check_run()?;
}
if ctx.config().cleanup() {
variant.execute(run_type).arg("cleanup").check_run()?;
}