mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
refactor: eliminate exec
This commit is contained in:
parent
dcd23f2cd3
commit
bce10de2af
5 changed files with 14 additions and 59 deletions
|
|
@ -11,6 +11,6 @@ pub struct PluginProps {
|
|||
|
||||
impl From<&PluginRule> for PluginProps {
|
||||
fn from(rule: &PluginRule) -> Self {
|
||||
Self { id: rule.id, name: rule.cmd.name.to_owned(), multi: rule.multi, prio: rule.prio }
|
||||
Self { id: rule.id, name: rule.run.name.to_owned(), multi: rule.multi, prio: rule.prio }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,19 +1,22 @@
|
|||
use std::sync::atomic::Ordering;
|
||||
|
||||
use serde::{Deserialize, Deserializer};
|
||||
use serde::Deserialize;
|
||||
use yazi_shared::{event::Cmd, Condition};
|
||||
|
||||
use crate::{Pattern, Priority, DEPRECATED_EXEC};
|
||||
use crate::{Pattern, Priority};
|
||||
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct PluginRule {
|
||||
#[serde(skip)]
|
||||
pub id: u8,
|
||||
pub cond: Option<Condition>,
|
||||
pub name: Option<Pattern>,
|
||||
pub mime: Option<Pattern>,
|
||||
pub cmd: Cmd,
|
||||
#[serde(deserialize_with = "super::run_deserialize")]
|
||||
pub run: Cmd,
|
||||
#[serde(default)]
|
||||
pub sync: bool,
|
||||
#[serde(default)]
|
||||
pub multi: bool,
|
||||
#[serde(default)]
|
||||
pub prio: Priority,
|
||||
}
|
||||
|
||||
|
|
@ -24,51 +27,3 @@ impl PluginRule {
|
|||
#[inline]
|
||||
pub fn any_dir(&self) -> bool { self.name.as_ref().is_some_and(|p| p.any_dir()) }
|
||||
}
|
||||
|
||||
// TODO: remove this once Yazi 0.3 is released
|
||||
impl<'de> Deserialize<'de> for PluginRule {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
#[derive(Deserialize)]
|
||||
pub struct Shadow {
|
||||
#[serde(default)]
|
||||
pub id: u8,
|
||||
pub cond: Option<Condition>,
|
||||
pub name: Option<Pattern>,
|
||||
pub mime: Option<Pattern>,
|
||||
pub run: Option<WrappedCmd>,
|
||||
pub exec: Option<WrappedCmd>,
|
||||
#[serde(default)]
|
||||
pub sync: bool,
|
||||
#[serde(default)]
|
||||
pub multi: bool,
|
||||
#[serde(default)]
|
||||
pub prio: Priority,
|
||||
}
|
||||
|
||||
let shadow = Shadow::deserialize(deserializer)?;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct WrappedCmd(#[serde(deserialize_with = "super::run_deserialize")] Cmd);
|
||||
|
||||
if shadow.exec.is_some() {
|
||||
DEPRECATED_EXEC.store(true, Ordering::Relaxed);
|
||||
}
|
||||
let Some(run) = shadow.run.or(shadow.exec) else {
|
||||
return Err(serde::de::Error::custom("missing field `run` within `[plugin]`"));
|
||||
};
|
||||
|
||||
Ok(Self {
|
||||
id: shadow.id,
|
||||
cond: shadow.cond,
|
||||
name: shadow.name,
|
||||
mime: shadow.mime,
|
||||
cmd: run.0,
|
||||
sync: shadow.sync,
|
||||
multi: shadow.multi,
|
||||
prio: shadow.prio,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,6 @@ impl Manager {
|
|||
};
|
||||
|
||||
let opt = opt.into() as Opt;
|
||||
isolate::seek_sync(&previewer.cmd, hovered.clone(), opt.units);
|
||||
isolate::seek_sync(&previewer.run, hovered.clone(), opt.units);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@ impl Preview {
|
|||
|
||||
self.abort();
|
||||
if previewer.sync {
|
||||
isolate::peek_sync(&previewer.cmd, file, self.skip);
|
||||
isolate::peek_sync(&previewer.run, file, self.skip);
|
||||
} else {
|
||||
self.previewer_ct = Some(isolate::peek(&previewer.cmd, file, self.skip));
|
||||
self.previewer_ct = Some(isolate::peek(&previewer.run, file, self.skip));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ impl Scheduler {
|
|||
pub fn preload_paged(&self, rule: &PluginRule, targets: Vec<&yazi_shared::fs::File>) {
|
||||
let id = self.ongoing.lock().add(
|
||||
TaskKind::Preload,
|
||||
format!("Run preloader `{}` with {} target(s)", rule.cmd.name, targets.len()),
|
||||
format!("Run preloader `{}` with {} target(s)", rule.run.name, targets.len()),
|
||||
);
|
||||
|
||||
let plugin = rule.into();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue