feat: add prepend_rules and append_rules for [open] in yazi.toml (#754)

This commit is contained in:
Filipe Paniguel 2024-02-29 23:38:02 -03:00 committed by GitHub
parent c3a1103529
commit 7f062359e8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5,7 +5,7 @@ use serde::{Deserialize, Deserializer};
use yazi_shared::MIME_DIR;
use super::Opener;
use crate::{open::OpenRule, MERGED_YAZI};
use crate::{open::OpenRule, Preset, MERGED_YAZI};
#[derive(Debug)]
pub struct Open {
@ -70,15 +70,22 @@ impl<'de> Deserialize<'de> for Open {
}
#[derive(Deserialize)]
struct OuterOpen {
rules: Vec<OpenRule>,
rules: Vec<OpenRule>,
#[serde(default)]
prepend_rules: Vec<OpenRule>,
#[serde(default)]
append_rules: Vec<OpenRule>,
}
let outer = Outer::deserialize(deserializer)?;
let mut outer = Outer::deserialize(deserializer)?;
Preset::mix(&mut outer.open.rules, outer.open.prepend_rules, outer.open.append_rules);
let openers = outer
.opener
.into_iter()
.map(|(k, v)| (k, v.into_iter().filter_map(|o| o.take()).collect::<IndexSet<_>>()))
.collect();
Ok(Self { rules: outer.open.rules, openers })
}
}