From a7064c18c8a74a0eba2d93be904c7f72bbff1e1c Mon Sep 17 00:00:00 2001 From: Alexandre Pasmantier <47638216+alexpasmantier@users.noreply.github.com> Date: Sun, 15 Dec 2024 12:23:31 +0100 Subject: [PATCH] refactor(config)!: use `$HOME/.config/television` by default for macOS (#124) --- .config/config.toml | 2 +- README.md | 2 +- crates/television/cli.rs | 2 +- crates/television/config.rs | 12 +++++++++++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.config/config.toml b/.config/config.toml index e3f8083..81af6a2 100644 --- a/.config/config.toml +++ b/.config/config.toml @@ -3,7 +3,7 @@ # Defaults: # --------- # Linux: `$HOME/.config/television/config.toml` -# macOS: `$HOME/Library/Application Support/television/config.toml` +# macOS: `$HOME/.config/television/config.toml` # Windows: `%APPDATA%\television\config.toml` # # XDG dirs: diff --git a/README.md b/README.md index 74596ff..ffe77f8 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ Default (may be overriden) locations where `television` expect the configuration |Platform|Value| |--------|:-----:| |Linux|`$HOME/.config/television/config.toml`| -|macOS|`$HOME/Library/Application Support/com.television/config.toml`| +|macOS|`$HOME/.config/television/config.toml`| |Windows|`{FOLDERID_LocalAppData}\television\config`| Or, if you'd rather use the XDG Base Directory Specification, tv will look for the configuration file in diff --git a/crates/television/cli.rs b/crates/television/cli.rs index 05c1fe7..309ece1 100644 --- a/crates/television/cli.rs +++ b/crates/television/cli.rs @@ -92,7 +92,7 @@ pub enum ParsedCliChannel { } fn channel_parser(channel: &str) -> Result { - let cable_channels = cable::load_cable_channels()?; + let cable_channels = cable::load_cable_channels().unwrap_or_default(); CliTvChannel::try_from(channel) .map(ParsedCliChannel::Builtin) .or_else(|_| { diff --git a/crates/television/config.rs b/crates/television/config.rs index e96171d..c78de0c 100644 --- a/crates/television/config.rs +++ b/crates/television/config.rs @@ -139,8 +139,18 @@ pub fn get_data_dir() -> PathBuf { pub fn get_config_dir() -> PathBuf { let directory = if let Some(s) = CONFIG_FOLDER.clone() { - debug!("Using config directory: {:?}", s); + 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()