From 08d9fed1ab2a08cbf3fee34833909a39db7deae9 Mon Sep 17 00:00:00 2001 From: Michal S Date: Sun, 21 Aug 2022 21:45:33 +0100 Subject: [PATCH] Fixed up arg aliases and use vercmp internally --- src/args.rs | 18 +++++++++--------- src/operations/upgrade.rs | 15 +++++++++++++-- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/args.rs b/src/args.rs index d77299d..4e2ec66 100644 --- a/src/args.rs +++ b/src/args.rs @@ -3,7 +3,7 @@ use clap::{Parser, Subcommand}; #[derive(Debug, Clone, Parser)] -#[clap(name = "Amethyst", version = env ! ("CARGO_PKG_VERSION"), about = env ! ("CARGO_PKG_DESCRIPTION"))] +#[clap(name = "Amethyst", version = env ! ("CARGO_PKG_VERSION"), about = env ! ("CARGO_PKG_DESCRIPTION"), infer_subcommands = true)] pub struct Args { #[clap(subcommand)] pub subcommand: Option, @@ -28,35 +28,35 @@ pub struct Args { #[derive(Debug, Clone, Subcommand)] pub enum Operation { /// Installs a package from either the AUR or the Pacman-defined repositories - #[clap(name = "install", aliases = & ["ins", "in", "i", "-S"])] + #[clap(name = "install", visible_aliases = & ["-S"])] Install(InstallArgs), /// Removes a previously installed package - #[clap(name = "remove", aliases = & ["rm", "rem", "r", "-R", "-Rs"])] + #[clap(name = "remove", visible_aliases = & ["rm", "-Rs"])] Remove(RemoveArgs), /// Searches for the relevant packages in both the AUR and repos - #[clap(name = "search", aliases = & ["sea", "sear", "se", "s", "-Ss"])] + #[clap(name = "search", visible_aliases = & ["-Ss"])] Search(SearchArgs), /// Queries installed packages - #[clap(name = "query", aliases = & ["q", "qu", "l", "ls", "-Q"])] + #[clap(name = "query", visible_aliases = & ["-Q"])] Query(QueryArgs), /// Gets info about a package - #[clap(name = "info", aliases = & ["inf", "in", "i", "-Qi"])] + #[clap(name = "info", visible_aliases = & ["-Qi"])] Info(InfoArgs), /// Upgrades locally installed packages to their latest versions - #[clap(name = "upgrade", aliases = & ["upg", "up", "u", "-Syu"])] + #[clap(name = "upgrade", visible_aliases = & ["-Syu"])] Upgrade(UpgradeArgs), /// Removes all orphaned packages - #[clap(name = "clean", aliases = & ["cln", "cl", "-Sc"])] + #[clap(name = "clean", visible_aliases = & ["-Sc"])] Clean, /// Runs pacdiff - #[clap(name = "diff", aliases = & ["dif", "di", "-d"])] + #[clap(name = "diff", visible_aliases = & ["-d"])] Diff, } diff --git a/src/operations/upgrade.rs b/src/operations/upgrade.rs index c2750ae..f413371 100644 --- a/src/operations/upgrade.rs +++ b/src/operations/upgrade.rs @@ -113,8 +113,19 @@ pub fn upgrade(options: Options, args: UpgradeArgs, cachedir: &str) { continue; } + // Run `vercmp` to compare versions + let vercmp_result = std::process::Command::new("vercmp") + .arg(&pkg.version) + .arg(&rpc_result.package.unwrap().version) + .output() + .unwrap(); + let vercmp_result = String::from_utf8(vercmp_result.stdout).unwrap(); + if verbosity >= 1 { + log!("Vercmp returned {:?}", vercmp_result); + } + // If versions differ, push to a vector - if rpc_result.package.unwrap().version != pkg.version { + if vercmp_result.trim() == "-1" { aur_upgrades.push(pkg.name); } } @@ -126,7 +137,7 @@ pub fn upgrade(options: Options, args: UpgradeArgs, cachedir: &str) { info!("No upgrades available for installed AUR packages"); } else { let cont = prompt!(default true, - "Found AUR packages {} have new versions available, upgrade?", + "AUR packages {} have new versions available, upgrade?", aur_upgrades.join(", "), ); if cont {