Fixed up arg aliases and use vercmp internally

i18n
Michal S 2 years ago
parent 74025f5230
commit 08d9fed1ab
No known key found for this signature in database
GPG Key ID: A6A1A4DCB22279B9

@ -3,7 +3,7 @@
use clap::{Parser, Subcommand}; use clap::{Parser, Subcommand};
#[derive(Debug, Clone, Parser)] #[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 { pub struct Args {
#[clap(subcommand)] #[clap(subcommand)]
pub subcommand: Option<Operation>, pub subcommand: Option<Operation>,
@ -28,35 +28,35 @@ pub struct Args {
#[derive(Debug, Clone, Subcommand)] #[derive(Debug, Clone, Subcommand)]
pub enum Operation { pub enum Operation {
/// Installs a package from either the AUR or the Pacman-defined repositories /// 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), Install(InstallArgs),
/// Removes a previously installed package /// Removes a previously installed package
#[clap(name = "remove", aliases = & ["rm", "rem", "r", "-R", "-Rs"])] #[clap(name = "remove", visible_aliases = & ["rm", "-Rs"])]
Remove(RemoveArgs), Remove(RemoveArgs),
/// Searches for the relevant packages in both the AUR and repos /// 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), Search(SearchArgs),
/// Queries installed packages /// Queries installed packages
#[clap(name = "query", aliases = & ["q", "qu", "l", "ls", "-Q"])] #[clap(name = "query", visible_aliases = & ["-Q"])]
Query(QueryArgs), Query(QueryArgs),
/// Gets info about a package /// Gets info about a package
#[clap(name = "info", aliases = & ["inf", "in", "i", "-Qi"])] #[clap(name = "info", visible_aliases = & ["-Qi"])]
Info(InfoArgs), Info(InfoArgs),
/// Upgrades locally installed packages to their latest versions /// Upgrades locally installed packages to their latest versions
#[clap(name = "upgrade", aliases = & ["upg", "up", "u", "-Syu"])] #[clap(name = "upgrade", visible_aliases = & ["-Syu"])]
Upgrade(UpgradeArgs), Upgrade(UpgradeArgs),
/// Removes all orphaned packages /// Removes all orphaned packages
#[clap(name = "clean", aliases = & ["cln", "cl", "-Sc"])] #[clap(name = "clean", visible_aliases = & ["-Sc"])]
Clean, Clean,
/// Runs pacdiff /// Runs pacdiff
#[clap(name = "diff", aliases = & ["dif", "di", "-d"])] #[clap(name = "diff", visible_aliases = & ["-d"])]
Diff, Diff,
} }

@ -113,8 +113,19 @@ pub fn upgrade(options: Options, args: UpgradeArgs, cachedir: &str) {
continue; 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 versions differ, push to a vector
if rpc_result.package.unwrap().version != pkg.version { if vercmp_result.trim() == "-1" {
aur_upgrades.push(pkg.name); 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"); info!("No upgrades available for installed AUR packages");
} else { } else {
let cont = prompt!(default true, let cont = prompt!(default true,
"Found AUR packages {} have new versions available, upgrade?", "AUR packages {} have new versions available, upgrade?",
aur_upgrades.join(", "), aur_upgrades.join(", "),
); );
if cont { if cont {

Loading…
Cancel
Save