mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
feat: allow upgrading only specific packages (#2841)
This commit is contained in:
parent
20446544ef
commit
145349b0e6
3 changed files with 41 additions and 14 deletions
|
|
@ -76,7 +76,12 @@ pub(super) enum CommandPkg {
|
|||
/// List all packages.
|
||||
List,
|
||||
/// Upgrade all packages.
|
||||
Upgrade,
|
||||
#[command(arg_required_else_help = true)]
|
||||
Upgrade {
|
||||
/// The packages to delete.
|
||||
#[arg(index = 1, num_args = 1..)]
|
||||
ids: Vec<String>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(clap::Args)]
|
||||
|
|
|
|||
|
|
@ -67,9 +67,9 @@ async fn run() -> anyhow::Result<()> {
|
|||
match cmd {
|
||||
CommandPkg::Add { ids } => pkg.add_many(&ids).await?,
|
||||
CommandPkg::Delete { ids } => pkg.delete_many(&ids).await?,
|
||||
CommandPkg::Install => pkg.install(false).await?,
|
||||
CommandPkg::Install => pkg.install().await?,
|
||||
CommandPkg::List => pkg.print()?,
|
||||
CommandPkg::Upgrade => pkg.install(true).await?,
|
||||
CommandPkg::Upgrade { ids } => pkg.upgrade_many(&ids).await?,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -79,11 +79,11 @@ async fn run() -> anyhow::Result<()> {
|
|||
"WARNING: `ya pack` is deprecated, use the new `ya pkg` instead. See https://github.com/sxyazi/yazi/pull/2770 for more details."
|
||||
)?;
|
||||
if cmd.install {
|
||||
package::Package::load().await?.install(false).await?;
|
||||
package::Package::load().await?.install().await?;
|
||||
} else if cmd.list {
|
||||
package::Package::load().await?.print()?;
|
||||
} else if cmd.upgrade {
|
||||
package::Package::load().await?.install(true).await?;
|
||||
package::Package::load().await?.upgrade_many(&[]).await?;
|
||||
} else if let Some(uses) = cmd.add {
|
||||
package::Package::load().await?.add_many(&uses).await?;
|
||||
} else if let Some(uses) = cmd.delete {
|
||||
|
|
|
|||
|
|
@ -41,18 +41,40 @@ impl Package {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) async fn install(&mut self, upgrade: bool) -> Result<()> {
|
||||
pub(crate) async fn install(&mut self) -> Result<()> {
|
||||
macro_rules! go {
|
||||
($dep:expr) => {
|
||||
let r = $dep.install().await;
|
||||
self.save().await?;
|
||||
r?;
|
||||
};
|
||||
}
|
||||
|
||||
for i in 0..self.plugins.len() {
|
||||
let r =
|
||||
if upgrade { self.plugins[i].upgrade().await } else { self.plugins[i].install().await };
|
||||
self.save().await?;
|
||||
r?;
|
||||
go!(self.plugins[i]);
|
||||
}
|
||||
for i in 0..self.flavors.len() {
|
||||
let r =
|
||||
if upgrade { self.flavors[i].upgrade().await } else { self.flavors[i].install().await };
|
||||
self.save().await?;
|
||||
r?;
|
||||
go!(self.flavors[i]);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) async fn upgrade_many(&mut self, uses: &[String]) -> Result<()> {
|
||||
macro_rules! go {
|
||||
($dep:expr) => {
|
||||
if uses.contains(&$dep.r#use) {
|
||||
let r = $dep.upgrade().await;
|
||||
self.save().await?;
|
||||
r?;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
for i in 0..self.plugins.len() {
|
||||
go!(self.plugins[i]);
|
||||
}
|
||||
for i in 0..self.flavors.len() {
|
||||
go!(self.flavors[i]);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue