mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41: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",
|
"regex",
|
||||||
"serde",
|
"serde",
|
||||||
"toml",
|
"toml",
|
||||||
|
"toml_edit",
|
||||||
"tracing",
|
"tracing",
|
||||||
"yazi-codegen",
|
"yazi-codegen",
|
||||||
"yazi-fs",
|
"yazi-fs",
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ ratatui = { workspace = true }
|
||||||
regex = { workspace = true }
|
regex = { workspace = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
toml = { workspace = true }
|
toml = { workspace = true }
|
||||||
|
toml_edit = "0.22.26"
|
||||||
tracing = { workspace = true }
|
tracing = { workspace = true }
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies]
|
[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.
|
# 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"
|
"$schema" = "https://yazi-rs.github.io/schemas/keymap.json"
|
||||||
|
|
||||||
[manager]
|
[mgr]
|
||||||
|
|
||||||
keymap = [
|
keymap = [
|
||||||
{ on = "<Esc>", run = "escape", desc = "Exit visual mode, clear selection, or cancel search" },
|
{ on = "<Esc>", run = "escape", desc = "Exit visual mode, clear selection, or cancel search" },
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ light = ""
|
||||||
|
|
||||||
# : Manager {{{
|
# : Manager {{{
|
||||||
|
|
||||||
[manager]
|
[mgr]
|
||||||
cwd = { fg = "cyan" }
|
cwd = { fg = "cyan" }
|
||||||
|
|
||||||
# Hovered
|
# Hovered
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ light = ""
|
||||||
|
|
||||||
# : Manager {{{
|
# : Manager {{{
|
||||||
|
|
||||||
[manager]
|
[mgr]
|
||||||
cwd = { fg = "cyan" }
|
cwd = { fg = "cyan" }
|
||||||
|
|
||||||
# Hovered
|
# Hovered
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
|
# 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"
|
"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
|
||||||
|
|
||||||
[manager]
|
[mgr]
|
||||||
ratio = [ 1, 4, 3 ]
|
ratio = [ 1, 4, 3 ]
|
||||||
sort_by = "alphabetical"
|
sort_by = "alphabetical"
|
||||||
sort_sensitive = false
|
sort_sensitive = false
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ use super::{Chord, KeymapRules};
|
||||||
|
|
||||||
#[derive(Deserialize, DeserializeOver1)]
|
#[derive(Deserialize, DeserializeOver1)]
|
||||||
pub struct Keymap {
|
pub struct Keymap {
|
||||||
#[serde(rename = "manager")]
|
|
||||||
pub mgr: KeymapRules,
|
pub mgr: KeymapRules,
|
||||||
pub tasks: KeymapRules,
|
pub tasks: KeymapRules,
|
||||||
pub spot: KeymapRules,
|
pub spot: KeymapRules,
|
||||||
|
|
|
||||||
|
|
@ -28,12 +28,8 @@ fn try_init(merge: bool) -> anyhow::Result<()> {
|
||||||
|
|
||||||
if merge {
|
if merge {
|
||||||
let dir = yazi_fs::Xdg::config_dir();
|
let dir = yazi_fs::Xdg::config_dir();
|
||||||
yazi = yazi.deserialize_over(toml::Deserializer::new(
|
yazi = yazi.deserialize_over(toml::Deserializer::new(&migrate(dir.join("yazi.toml"))))?;
|
||||||
&std::fs::read_to_string(dir.join("yazi.toml")).unwrap_or_default(),
|
keymap = keymap.deserialize_over(toml::Deserializer::new(&migrate(dir.join("keymap.toml"))))?;
|
||||||
))?;
|
|
||||||
keymap = keymap.deserialize_over(toml::Deserializer::new(
|
|
||||||
&std::fs::read_to_string(dir.join("keymap.toml")).unwrap_or_default(),
|
|
||||||
))?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
YAZI.init(yazi.reshape()?);
|
YAZI.init(yazi.reshape()?);
|
||||||
|
|
@ -53,9 +49,9 @@ fn try_init_flavor(light: bool, merge: bool) -> anyhow::Result<()> {
|
||||||
let mut theme = Preset::theme(light)?;
|
let mut theme = Preset::theme(light)?;
|
||||||
|
|
||||||
if merge {
|
if merge {
|
||||||
let shadow = theme::Theme::deserialize_shadow(toml::Deserializer::new(
|
let shadow = theme::Theme::deserialize_shadow(toml::Deserializer::new(&migrate(
|
||||||
&std::fs::read_to_string(yazi_fs::Xdg::config_dir().join("theme.toml")).unwrap_or_default(),
|
yazi_fs::Xdg::config_dir().join("theme.toml"),
|
||||||
))?;
|
)))?;
|
||||||
|
|
||||||
let flavor = shadow.flavor.as_ref().map(theme::Flavor::from).unwrap_or_default().read(light)?;
|
let flavor = shadow.flavor.as_ref().map(theme::Flavor::from).unwrap_or_default().read(light)?;
|
||||||
theme = theme.deserialize_over(toml::Deserializer::new(&flavor))?;
|
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])?;
|
TTY.reader().read_exact(&mut [0])?;
|
||||||
Ok(())
|
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)]
|
#[derive(Deserialize, DeserializeOver1, Serialize)]
|
||||||
pub struct Theme {
|
pub struct Theme {
|
||||||
pub flavor: Flavor,
|
pub flavor: Flavor,
|
||||||
#[serde(rename = "manager")]
|
pub mgr: Mgr,
|
||||||
pub mgr: Mgr, // TODO: Remove `serde(rename)`
|
|
||||||
pub tabs: Tabs,
|
pub tabs: Tabs,
|
||||||
pub mode: Mode,
|
pub mode: Mode,
|
||||||
pub status: Status,
|
pub status: Status,
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,7 @@ use crate::{mgr, open, opener, plugin, popup, preview, tasks, which};
|
||||||
|
|
||||||
#[derive(Deserialize, DeserializeOver1)]
|
#[derive(Deserialize, DeserializeOver1)]
|
||||||
pub struct Yazi {
|
pub struct Yazi {
|
||||||
#[serde(rename = "manager")]
|
pub mgr: mgr::Mgr,
|
||||||
pub mgr: mgr::Mgr, // TODO: remove serde(rename)
|
|
||||||
pub preview: preview::Preview,
|
pub preview: preview::Preview,
|
||||||
pub opener: opener::Opener,
|
pub opener: opener::Opener,
|
||||||
pub open: open::Open,
|
pub open: open::Open,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue