// yt - A fully featured command line YouTube client // // Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de> // SPDX-License-Identifier: GPL-3.0-or-later // // This file is part of Yt. // // You should have received a copy of the License along with this program. // If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. use std::path::PathBuf; use serde::Deserialize; #[derive(Debug, Deserialize, PartialEq)] #[serde(deny_unknown_fields)] pub struct ConfigFile { pub select: Option<SelectConfig>, pub watch: Option<WatchConfig>, pub paths: Option<PathsConfig>, pub download: Option<DownloadConfig>, pub update: Option<UpdateConfig>, } #[derive(Debug, Deserialize, PartialEq, Clone, Copy)] #[serde(deny_unknown_fields)] pub struct UpdateConfig { pub max_backlog: Option<u32>, } #[derive(Debug, Deserialize, PartialEq, Clone)] #[serde(deny_unknown_fields)] pub struct DownloadConfig { /// This will then be converted to an u64 pub max_cache_size: Option<String>, } #[derive(Debug, Deserialize, PartialEq, Clone)] #[serde(deny_unknown_fields)] pub struct SelectConfig { pub playback_speed: Option<f64>, pub subtitle_langs: Option<String>, } #[derive(Debug, Deserialize, PartialEq, Clone, Copy)] #[serde(deny_unknown_fields)] pub struct WatchConfig { pub local_comments_length: Option<usize>, } #[derive(Debug, Deserialize, PartialEq, Clone)] #[serde(deny_unknown_fields)] pub struct PathsConfig { pub download_dir: Option<PathBuf>, pub mpv_config_path: Option<PathBuf>, pub mpv_input_path: Option<PathBuf>, pub database_path: Option<PathBuf>, pub last_selection_path: Option<PathBuf>, }