refactor(debug): improve configuration debug logging

This commit is contained in:
Alex Pasmantier 2025-04-06 19:26:07 +02:00
parent 82e3f890c8
commit ddadf3937d
7 changed files with 28 additions and 26 deletions

View File

@ -2,12 +2,12 @@ use crate::action::Action;
use crate::event::{convert_raw_event_to_key, Key};
use crossterm::event::{KeyCode, KeyEvent, KeyModifiers};
use rustc_hash::FxHashMap;
use serde::{Deserialize, Deserializer};
use serde::{Deserialize, Deserializer, Serialize};
use std::fmt::Display;
use std::hash::Hash;
use std::ops::{Deref, DerefMut};
#[derive(Clone, Debug, Deserialize, PartialEq, Hash)]
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Hash)]
pub enum Binding {
SingleKey(Key),
MultipleKeys(Vec<Key>),
@ -28,7 +28,7 @@ impl Display for Binding {
}
}
#[derive(Clone, Debug, Default, PartialEq)]
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
pub struct KeyBindings(pub FxHashMap<Action, Binding>);
impl<I> From<I> for KeyBindings

View File

@ -10,7 +10,7 @@ use directories::ProjectDirs;
pub use keybindings::merge_keybindings;
pub use keybindings::{parse_key, Binding, KeyBindings};
use previewers::PreviewersConfig;
use serde::Deserialize;
use serde::{Deserialize, Serialize};
use shell_integration::ShellIntegrationConfig;
pub use themes::Theme;
use tracing::{debug, warn};
@ -25,7 +25,7 @@ mod ui;
const DEFAULT_CONFIG: &str = include_str!("../../.config/config.toml");
#[allow(dead_code, clippy::module_name_repetitions)]
#[derive(Clone, Debug, Deserialize, Default, PartialEq)]
#[derive(Clone, Debug, Deserialize, Default, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct AppConfig {
#[serde(default = "get_data_dir")]
@ -48,7 +48,7 @@ impl Hash for AppConfig {
}
#[allow(dead_code)]
#[derive(Clone, Debug, Deserialize, Default, PartialEq, Hash)]
#[derive(Clone, Debug, Serialize, Deserialize, Default, PartialEq, Hash)]
#[serde(deny_unknown_fields)]
pub struct Config {
/// General application configuration
@ -128,7 +128,10 @@ impl Config {
let final_cfg =
Self::merge_user_with_default(default_config, user_cfg);
debug!("Config: {:?}", final_cfg);
debug!(
"Configuration: \n{}",
toml::to_string(&final_cfg).unwrap()
);
Ok(final_cfg)
} else {
// otherwise, create the default configuration file
@ -209,10 +212,8 @@ pub fn get_data_dir() -> PathBuf {
});
let directory = if let Some(s) = data_folder {
debug!("Using data directory: {:?}", s);
s
} else if let Some(proj_dirs) = project_directory() {
debug!("Falling back to default data dir");
proj_dirs.data_local_dir().to_path_buf()
} else {
PathBuf::from("../../../../..").join(".data")
@ -233,20 +234,17 @@ pub fn get_config_dir() -> PathBuf {
.filter(|p| p.is_absolute())
});
let directory = if let Some(s) = config_dir {
debug!("Config directory: {:?}", s);
s
} else if cfg!(unix) {
// default to ~/.config/television for unix systems
if let Some(base_dirs) = directories::BaseDirs::new() {
let cfg_dir =
base_dirs.home_dir().join(".config").join("television");
debug!("Config directory: {:?}", cfg_dir);
cfg_dir
} else {
PathBuf::from("../../../../..").join(".config")
}
} else if let Some(proj_dirs) = project_directory() {
debug!("Falling back to default config dir");
proj_dirs.config_local_dir().to_path_buf()
} else {
PathBuf::from("../../../../..").join("../../../../../.config")

View File

@ -1,7 +1,7 @@
use crate::preview::{previewers, PreviewerConfig};
use serde::Deserialize;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Default, PartialEq, Hash)]
#[derive(Clone, Debug, Deserialize, Serialize, Default, PartialEq, Hash)]
pub struct PreviewersConfig {
#[serde(default)]
pub basic: BasicPreviewerConfig,
@ -17,10 +17,10 @@ impl From<PreviewersConfig> for PreviewerConfig {
}
}
#[derive(Clone, Debug, Deserialize, Default, PartialEq, Hash)]
#[derive(Clone, Debug, Deserialize, Serialize, Default, PartialEq, Hash)]
pub struct BasicPreviewerConfig {}
#[derive(Clone, Debug, Deserialize, PartialEq, Hash)]
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Hash)]
#[serde(default)]
pub struct FilePreviewerConfig {
//pub max_file_size: u64,
@ -36,5 +36,5 @@ impl Default for FilePreviewerConfig {
}
}
#[derive(Clone, Debug, Deserialize, Default, PartialEq, Hash)]
#[derive(Clone, Debug, Deserialize, Serialize, Default, PartialEq, Hash)]
pub struct EnvVarPreviewerConfig {}

View File

@ -4,9 +4,9 @@ use crate::config::parse_key;
use crate::event::Key;
use crate::utils::hashmaps;
use rustc_hash::FxHashMap;
use serde::Deserialize;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Default, PartialEq)]
#[derive(Clone, Debug, Deserialize, Serialize, Default, PartialEq)]
#[serde(default)]
pub struct ShellIntegrationConfig {
/// DEPRECATED: This is a legacy configuration option that is no longer used.

View File

@ -1,4 +1,4 @@
use serde::Deserialize;
use serde::{Deserialize, Serialize};
use crate::screen::layout::{InputPosition, PreviewTitlePosition};
@ -6,7 +6,7 @@ use super::themes::DEFAULT_THEME;
const DEFAULT_UI_SCALE: u16 = 100;
#[derive(Clone, Debug, Deserialize, PartialEq, Hash)]
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Hash)]
#[serde(default)]
pub struct UiConfig {
pub use_nerd_font_icons: bool,

View File

@ -15,7 +15,7 @@ use crossterm::event::{
};
use serde::{Deserialize, Serialize};
use tokio::{signal, sync::mpsc};
use tracing::{debug, warn};
use tracing::{debug, trace, warn};
#[derive(Debug, Clone, Copy)]
pub enum Event<I> {
@ -247,7 +247,7 @@ fn flush_resize_events(first_resize: (u16, u16)) -> ((u16, u16), (u16, u16)) {
}
pub fn convert_raw_event_to_key(event: KeyEvent) -> Key {
debug!("Raw event: {:?}", event);
trace!("Raw event: {:?}", event);
if event.kind == KeyEventKind::Release {
return Key::Null;
}

View File

@ -2,7 +2,7 @@ use std::fmt::Display;
use ratatui::layout;
use ratatui::layout::{Constraint, Direction, Rect};
use serde::Deserialize;
use serde::{Deserialize, Serialize};
use crate::config::UiConfig;
@ -46,7 +46,9 @@ impl HelpBarLayout {
}
}
#[derive(Debug, Clone, Copy, Deserialize, Default, PartialEq, Hash)]
#[derive(
Debug, Clone, Copy, Deserialize, Serialize, Default, PartialEq, Hash,
)]
pub enum InputPosition {
#[serde(rename = "top")]
#[default]
@ -64,7 +66,9 @@ impl Display for InputPosition {
}
}
#[derive(Debug, Clone, Copy, Deserialize, Default, PartialEq, Hash)]
#[derive(
Debug, Clone, Copy, Deserialize, Serialize, Default, PartialEq, Hash,
)]
pub enum PreviewTitlePosition {
#[serde(rename = "top")]
#[default]