From 7e427fed569822f0a06394cbba335476fd31939a Mon Sep 17 00:00:00 2001 From: evpeople Date: Wed, 29 Jan 2025 14:20:15 +0800 Subject: [PATCH] feat(cli): support multiple packages in package management commands Allow users to: - Add multiple packages at once: `ya pack -a A B C D` - Delete multiple packages at once: `ya pack -d A B C D` Fixes #2250 --- yazi-cli/src/args.rs | 10 +++++----- yazi-cli/src/main.rs | 14 ++++++++++---- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/yazi-cli/src/args.rs b/yazi-cli/src/args.rs index c309e201..c59f8b76 100644 --- a/yazi-cli/src/args.rs +++ b/yazi-cli/src/args.rs @@ -54,12 +54,12 @@ pub(super) struct CommandEmitTo { #[derive(clap::Args)] #[command(arg_required_else_help = true)] pub(super) struct CommandPack { - /// Add a package. - #[arg(short = 'a', long)] - pub(super) add: Option, + /// Add packages. + #[arg(short = 'a', long, num_args = 1..)] + pub(super) add: Option>, /// Delete a package. - #[arg(short = 'd', long)] - pub(super) delete: Option, + #[arg(short = 'd', long,num_args = 1..)] + pub(super) delete: Option>, /// Install all packages. #[arg(short = 'i', long)] pub(super) install: bool, diff --git a/yazi-cli/src/main.rs b/yazi-cli/src/main.rs index e1470017..b1561bfa 100644 --- a/yazi-cli/src/main.rs +++ b/yazi-cli/src/main.rs @@ -71,10 +71,16 @@ async fn run() -> anyhow::Result<()> { package::Package::load().await?.print()?; } else if cmd.upgrade { package::Package::load().await?.install(true).await?; - } else if let Some(repo) = cmd.add { - package::Package::load().await?.add(&repo).await?; - } else if let Some(repo) = cmd.delete { - package::Package::load().await?.delete(&repo).await?; + } else if let Some(repos) = cmd.add { + let mut package = package::Package::load().await?; + for repo in repos { + package.add(&repo).await?; + } + } else if let Some(repos) = cmd.delete { + let mut package = package::Package::load().await?; + for repo in repos { + package.delete(&repo).await?; + } } }