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 all packages.
|
||||||
List,
|
List,
|
||||||
/// Upgrade all packages.
|
/// 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)]
|
#[derive(clap::Args)]
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,9 @@ async fn run() -> anyhow::Result<()> {
|
||||||
match cmd {
|
match cmd {
|
||||||
CommandPkg::Add { ids } => pkg.add_many(&ids).await?,
|
CommandPkg::Add { ids } => pkg.add_many(&ids).await?,
|
||||||
CommandPkg::Delete { ids } => pkg.delete_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::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."
|
"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 {
|
if cmd.install {
|
||||||
package::Package::load().await?.install(false).await?;
|
package::Package::load().await?.install().await?;
|
||||||
} else if cmd.list {
|
} else if cmd.list {
|
||||||
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?.upgrade_many(&[]).await?;
|
||||||
} else if let Some(uses) = cmd.add {
|
} else if let Some(uses) = cmd.add {
|
||||||
package::Package::load().await?.add_many(&uses).await?;
|
package::Package::load().await?.add_many(&uses).await?;
|
||||||
} else if let Some(uses) = cmd.delete {
|
} else if let Some(uses) = cmd.delete {
|
||||||
|
|
|
||||||
|
|
@ -41,18 +41,40 @@ impl Package {
|
||||||
Ok(())
|
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() {
|
for i in 0..self.plugins.len() {
|
||||||
let r =
|
go!(self.plugins[i]);
|
||||||
if upgrade { self.plugins[i].upgrade().await } else { self.plugins[i].install().await };
|
|
||||||
self.save().await?;
|
|
||||||
r?;
|
|
||||||
}
|
}
|
||||||
for i in 0..self.flavors.len() {
|
for i in 0..self.flavors.len() {
|
||||||
let r =
|
go!(self.flavors[i]);
|
||||||
if upgrade { self.flavors[i].upgrade().await } else { self.flavors[i].install().await };
|
}
|
||||||
self.save().await?;
|
Ok(())
|
||||||
r?;
|
}
|
||||||
|
|
||||||
|
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(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue