mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-21 23:01:05 +00:00
refactor!: deprecate [manager] in favor of [mgr] (#2803)
This commit is contained in:
parent
d7716cab44
commit
8a4d495132
10 changed files with 55 additions and 18 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
|
@ -3393,6 +3393,7 @@ dependencies = [
|
|||
"regex",
|
||||
"serde",
|
||||
"toml",
|
||||
"toml_edit",
|
||||
"tracing",
|
||||
"yazi-codegen",
|
||||
"yazi-fs",
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ ratatui = { workspace = true }
|
|||
regex = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
toml = { workspace = true }
|
||||
toml_edit = "0.22.26"
|
||||
tracing = { workspace = true }
|
||||
|
||||
[target.'cfg(target_os = "macos")'.dependencies]
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
|
||||
"$schema" = "https://yazi-rs.github.io/schemas/keymap.json"
|
||||
|
||||
[manager]
|
||||
[mgr]
|
||||
|
||||
keymap = [
|
||||
{ on = "<Esc>", run = "escape", desc = "Exit visual mode, clear selection, or cancel search" },
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ light = ""
|
|||
|
||||
# : Manager {{{
|
||||
|
||||
[manager]
|
||||
[mgr]
|
||||
cwd = { fg = "cyan" }
|
||||
|
||||
# Hovered
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ light = ""
|
|||
|
||||
# : Manager {{{
|
||||
|
||||
[manager]
|
||||
[mgr]
|
||||
cwd = { fg = "cyan" }
|
||||
|
||||
# Hovered
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
|
||||
"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
|
||||
|
||||
[manager]
|
||||
[mgr]
|
||||
ratio = [ 1, 4, 3 ]
|
||||
sort_by = "alphabetical"
|
||||
sort_sensitive = false
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ use super::{Chord, KeymapRules};
|
|||
|
||||
#[derive(Deserialize, DeserializeOver1)]
|
||||
pub struct Keymap {
|
||||
#[serde(rename = "manager")]
|
||||
pub mgr: KeymapRules,
|
||||
pub tasks: KeymapRules,
|
||||
pub spot: KeymapRules,
|
||||
|
|
|
|||
|
|
@ -28,12 +28,8 @@ fn try_init(merge: bool) -> anyhow::Result<()> {
|
|||
|
||||
if merge {
|
||||
let dir = yazi_fs::Xdg::config_dir();
|
||||
yazi = yazi.deserialize_over(toml::Deserializer::new(
|
||||
&std::fs::read_to_string(dir.join("yazi.toml")).unwrap_or_default(),
|
||||
))?;
|
||||
keymap = keymap.deserialize_over(toml::Deserializer::new(
|
||||
&std::fs::read_to_string(dir.join("keymap.toml")).unwrap_or_default(),
|
||||
))?;
|
||||
yazi = yazi.deserialize_over(toml::Deserializer::new(&migrate(dir.join("yazi.toml"))))?;
|
||||
keymap = keymap.deserialize_over(toml::Deserializer::new(&migrate(dir.join("keymap.toml"))))?;
|
||||
}
|
||||
|
||||
YAZI.init(yazi.reshape()?);
|
||||
|
|
@ -53,9 +49,9 @@ fn try_init_flavor(light: bool, merge: bool) -> anyhow::Result<()> {
|
|||
let mut theme = Preset::theme(light)?;
|
||||
|
||||
if merge {
|
||||
let shadow = theme::Theme::deserialize_shadow(toml::Deserializer::new(
|
||||
&std::fs::read_to_string(yazi_fs::Xdg::config_dir().join("theme.toml")).unwrap_or_default(),
|
||||
))?;
|
||||
let shadow = theme::Theme::deserialize_shadow(toml::Deserializer::new(&migrate(
|
||||
yazi_fs::Xdg::config_dir().join("theme.toml"),
|
||||
)))?;
|
||||
|
||||
let flavor = shadow.flavor.as_ref().map(theme::Flavor::from).unwrap_or_default().read(light)?;
|
||||
theme = theme.deserialize_over(toml::Deserializer::new(&flavor))?;
|
||||
|
|
@ -87,3 +83,45 @@ fn wait_for_key(e: anyhow::Error) -> anyhow::Result<()> {
|
|||
TTY.reader().read_exact(&mut [0])?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// TODO: remove this in the future
|
||||
fn migrate(p: std::path::PathBuf) -> String {
|
||||
let Ok(old) = std::fs::read_to_string(&p) else {
|
||||
return String::new();
|
||||
};
|
||||
let Ok(mut doc) = old.parse::<toml_edit::DocumentMut>() else {
|
||||
return old;
|
||||
};
|
||||
if doc.get("mgr").is_some() {
|
||||
return old;
|
||||
}
|
||||
let Some(manager) = doc.remove("manager") else {
|
||||
return old;
|
||||
};
|
||||
|
||||
doc.insert("mgr", manager);
|
||||
let new = doc.to_string();
|
||||
|
||||
let mut backup = p.clone();
|
||||
backup.set_file_name(format!(
|
||||
"{}-{}",
|
||||
p.file_name().unwrap().to_str().unwrap(),
|
||||
yazi_shared::timestamp_us()
|
||||
));
|
||||
|
||||
if let Err(e) = std::fs::copy(&p, backup) {
|
||||
_ = TTY.writer().write_all(
|
||||
format!("WARNING: `[manager]` has been deprecated in favor of the new `[mgr]`, see #2803 for more details: https://github.com/sxyazi/yazi/pull/2803\n
|
||||
Trying to migrate your config automatically failed, please edit the file manually, error while backuping {p:?}: \n{e:?}\n").as_bytes(),
|
||||
);
|
||||
return new;
|
||||
}
|
||||
|
||||
if let Err(e) = std::fs::write(&p, &new) {
|
||||
_ = TTY.writer().write_all(
|
||||
format!("WARNING: `[manager]` has been deprecated in favor of the new `[mgr]`, see #2803 for more details: https://github.com/sxyazi/yazi/pull/2803\n
|
||||
Trying to migrate your config automatically failed, please edit the file manually, error while writing {p:?}: \n{e:?}\n").as_bytes(),
|
||||
);
|
||||
}
|
||||
new
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,8 +11,7 @@ use super::{Filetype, Flavor, Icon};
|
|||
#[derive(Deserialize, DeserializeOver1, Serialize)]
|
||||
pub struct Theme {
|
||||
pub flavor: Flavor,
|
||||
#[serde(rename = "manager")]
|
||||
pub mgr: Mgr, // TODO: Remove `serde(rename)`
|
||||
pub mgr: Mgr,
|
||||
pub tabs: Tabs,
|
||||
pub mode: Mode,
|
||||
pub status: Status,
|
||||
|
|
|
|||
|
|
@ -6,8 +6,7 @@ use crate::{mgr, open, opener, plugin, popup, preview, tasks, which};
|
|||
|
||||
#[derive(Deserialize, DeserializeOver1)]
|
||||
pub struct Yazi {
|
||||
#[serde(rename = "manager")]
|
||||
pub mgr: mgr::Mgr, // TODO: remove serde(rename)
|
||||
pub mgr: mgr::Mgr,
|
||||
pub preview: preview::Preview,
|
||||
pub opener: opener::Opener,
|
||||
pub open: open::Open,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue