use std::process::Command;
use std::path::PathBuf;
pub fn brew_cache_path() -> Option<PathBuf> {
let output = Command::new("brew").args(["--cache"]).output().ok()?;
if output.status.success() {
let path = String::from_utf8_lossy(&output.stdout).trim().to_string();
let p = PathBuf::from(&path);
if p.exists() { Some(p) } else { None }
} else {
None
}
}
pub fn brew_cleanup(dry_run: bool) -> u64 {
if dry_run {
if let Some(cache) = brew_cache_path() {
return crate::scanner::scan_size(&cache).0;
}
return 0;
}
let output = Command::new("brew")
.args(["cleanup", "--prune=all", "-s"])
.output();
match output {
Ok(o) if o.status.success() => {
if let Some(cache) = brew_cache_path() {
return crate::scanner::scan_size(&cache).0;
}
0
}
_ => 0,
}
}