diff --git a/src/main.rs b/src/main.rs index fc118b50..d537c4df 100644 --- a/src/main.rs +++ b/src/main.rs @@ -141,7 +141,8 @@ fn run() -> Result<()> { { if config.should_run(Step::PackageManagers) { runner.execute("brew", || unix::run_homebrew(config.cleanup(), run_type))?; - + #[cfg(target_os = "macos")] + runner.execute("MacPorts", || macos::run_macports(&ctx))?; runner.execute("nix", || unix::run_nix(&ctx))?; runner.execute("home-manager", || unix::run_home_manager(run_type))?; } diff --git a/src/steps/os/macos.rs b/src/steps/os/macos.rs index 0b9a8d6c..62ff21ef 100644 --- a/src/steps/os/macos.rs +++ b/src/steps/os/macos.rs @@ -15,6 +15,25 @@ pub fn run_msupdate(ctx: &ExecutionContext) -> Result<()> { ctx.run_type().execute(msupdate).arg("--install").check_run() } +pub fn run_macports(ctx: &ExecutionContext) -> Result<()> { + require("port")?; + let sudo = ctx.sudo().as_ref().unwrap(); + print_separator("MacPorts"); + ctx.run_type().execute(sudo).args(&["port", "selfupdate"]).check_run()?; + ctx.run_type() + .execute(sudo) + .args(&["port", "-u", "upgrade", "outdated"]) + .check_run()?; + if ctx.config().cleanup() { + ctx.run_type() + .execute(sudo) + .args(&["port", "-N", "reclaim"]) + .check_run()?; + } + + Ok(()) +} + pub fn run_mas(run_type: RunType) -> Result<()> { let mas = require("mas")?; print_separator("macOS App Store");