mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
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
This commit is contained in:
parent
c061397a09
commit
7e427fed56
2 changed files with 15 additions and 9 deletions
|
|
@ -54,12 +54,12 @@ pub(super) struct CommandEmitTo {
|
||||||
#[derive(clap::Args)]
|
#[derive(clap::Args)]
|
||||||
#[command(arg_required_else_help = true)]
|
#[command(arg_required_else_help = true)]
|
||||||
pub(super) struct CommandPack {
|
pub(super) struct CommandPack {
|
||||||
/// Add a package.
|
/// Add packages.
|
||||||
#[arg(short = 'a', long)]
|
#[arg(short = 'a', long, num_args = 1..)]
|
||||||
pub(super) add: Option<String>,
|
pub(super) add: Option<Vec<String>>,
|
||||||
/// Delete a package.
|
/// Delete a package.
|
||||||
#[arg(short = 'd', long)]
|
#[arg(short = 'd', long,num_args = 1..)]
|
||||||
pub(super) delete: Option<String>,
|
pub(super) delete: Option<Vec<String>>,
|
||||||
/// Install all packages.
|
/// Install all packages.
|
||||||
#[arg(short = 'i', long)]
|
#[arg(short = 'i', long)]
|
||||||
pub(super) install: bool,
|
pub(super) install: bool,
|
||||||
|
|
|
||||||
|
|
@ -71,10 +71,16 @@ async fn run() -> anyhow::Result<()> {
|
||||||
package::Package::load().await?.print()?;
|
package::Package::load().await?.print()?;
|
||||||
} else if cmd.upgrade {
|
} else if cmd.upgrade {
|
||||||
package::Package::load().await?.install(true).await?;
|
package::Package::load().await?.install(true).await?;
|
||||||
} else if let Some(repo) = cmd.add {
|
} else if let Some(repos) = cmd.add {
|
||||||
package::Package::load().await?.add(&repo).await?;
|
let mut package = package::Package::load().await?;
|
||||||
} else if let Some(repo) = cmd.delete {
|
for repo in repos {
|
||||||
package::Package::load().await?.delete(&repo).await?;
|
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?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue