From 1e2d9c785c17c985adbb2ceab7b28fbd915d3561 Mon Sep 17 00:00:00 2001 From: jnats Date: Sat, 2 Oct 2021 00:02:23 +0100 Subject: [PATCH] uninstalling removes cachedir and smartened errs --- src/mods/uninstall.rs | 53 ++++++++++++++++++++++++++++++------------- src/mods/update.rs | 14 ++++++++---- src/mods/upgrade.rs | 37 +++++++++++++++++++----------- 3 files changed, 70 insertions(+), 34 deletions(-) diff --git a/src/mods/uninstall.rs b/src/mods/uninstall.rs index a817b0a..fcee918 100644 --- a/src/mods/uninstall.rs +++ b/src/mods/uninstall.rs @@ -1,25 +1,46 @@ use runas::Command; -use crate::mods::strs::{err_unrec, sec, succ}; +use crate::mods::strs::{err_unrec, sec, succ, err_rec}; +use std::{fs, path::Path}; -pub fn uninstall(noconfirm: bool, pkg: Vec) { - sec(format!("Attempting to uninstall packages: {}", &pkg.join(" "))); +pub fn uninstall(noconfirm: bool, pkgs: Vec) { + sec(format!("Attempting to uninstall packages: {}", &pkgs.join(" "))); if noconfirm == true { - let result = Command::new("pacman").arg("-Rs").args(&pkg).arg("--noconfirm").status(); - match result { - Ok(_) => { - succ(format!("Succesfully uninstalled packages: {}", &pkg.join(" "))) - } - Err(_) => { - err_unrec(format!("Couldn't uninstall packages: {}", &pkg.join(" "))) + let result = Command::new("pacman").arg("-Rs").args(&pkgs).arg("--noconfirm").status().expect("Couldn't call pacman"); + match result.code() { + Some(0) => { + succ(format!("Succesfully uninstalled packages: {}", &pkgs.join(" "))) + } + Some(_) => { + err_rec(format!("Couldn't uninstall packages: {}", &pkgs.join(" "))) + } + None =>{ + err_rec(format!("Couldn't uninstall packages: {}", &pkgs.join(" "))) }}; } else { - let result = Command::new("pacman").arg("-Rs").args(&pkg).status(); - match result { - Ok(_) => { - succ(format!("Succesfully uninstalled packages: {}", &pkg.join(" "))) + let result = Command::new("pacman").arg("-Rs").args(&pkgs).status().expect("Couldn't call pacman"); + match result.code() { + Some(0) => { + succ(format!("Succesfully uninstalled packages: {}", &pkgs.join(" "))) + } + Some(_) => { + err_rec(format!("Couldn't uninstall packages: {}", &pkgs.join(" "))) } - Err(_) => { - err_unrec(format!("Couldn't uninstall packages: {}", &pkg.join(" "))) + None =>{ + err_rec(format!("Couldn't uninstall packages: {}", &pkgs.join(" "))) }}; } + for pkg in &pkgs { + let pkgdir = format!("{}/.cache/ame/{}", std::env::var("HOME").unwrap(), pkg); + let path = Path::new(&pkgdir); + if path.is_dir() { + let rm_result = fs::remove_dir_all(&path); + match rm_result { + Ok(_) => { + succ(format!("Removed AUR cache directory for {}", pkg)) + } + Err(_) => { + err_unrec(format!("Failed to remove AUR cache directory for {}", pkg)) + }}; + } + } } diff --git a/src/mods/update.rs b/src/mods/update.rs index 881a4dc..1d09af9 100644 --- a/src/mods/update.rs +++ b/src/mods/update.rs @@ -6,12 +6,16 @@ pub fn update() { let result = Command::new("pacman") .arg("-Sy") - .status(); - match result { - Ok(_) => { + .status() + .expect("Couldn't call pacman"); + match result.code() { + Some(0) => { succ(format!("Repos succesfully synced")) } - Err(_) => { - err_unrec(format!("Couldn't sync package repos (how?)")) + Some(_) => { + err_unrec(format!("Couldn't sync package repos")) + } + None => { + err_unrec(format!("Couldn't sync package repos")) }} } diff --git a/src/mods/upgrade.rs b/src/mods/upgrade.rs index 7e22743..86c5f65 100644 --- a/src/mods/upgrade.rs +++ b/src/mods/upgrade.rs @@ -8,23 +8,31 @@ pub fn upgrade(noconfirm: bool, cachedir: &str){ let result = Command::new("pacman") .arg("-Syu") .arg("--noconfirm") - .status(); - match result { - Ok(_) => { + .status() + .expect("Couldn't call pacman"); + match result.code() { + Some(0) => { succ(format!("All repo packages upgraded")) } - Err(_) => { + Some(_) => { + err_unrec(format!("Couldn't upgrade packages")) + } + None => { err_unrec(format!("Couldn't upgrade packages")) }}; } else { let result = Command::new("pacman") .arg("-Syu") - .status(); - match result { - Ok(_) => { + .status() + .expect("Couldn't call pacman"); + match result.code() { + Some(0) => { succ(format!("All repo packages upgraded")) } - Err(_) => { + Some(_) => { + err_unrec(format!("Couldn't upgrade packages")) + } + None => { err_unrec(format!("Couldn't upgrade packages")) }}; } @@ -58,14 +66,17 @@ pub fn upgrade(noconfirm: bool, cachedir: &str){ err_unrec(format!("Couldn't enter AUR package directory to install new version")) }} - let makepkg_result = std::process::Command::new("makepkg").arg("-si").status(); - match makepkg_result { - Ok(_) => { + let makepkg_result = std::process::Command::new("makepkg").arg("-si").status().expect("Couldn't call makepkg"); + match makepkg_result.code() { + Some(0) => { succ(format!("New AUR package version installed")) } - Err(_) => { + Some(_) => { err_unrec(format!("Couldn't install new AUR package version")) - }} + } + None => { + err_unrec(format!("Couldn't install new AUR package version")) + }}; } } }