diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-08-24 11:27:31 +0200 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-08-24 11:45:28 +0200 |
commit | 43522ef7898c60ffd3e7c5ff056fd765635bbc5c (patch) | |
tree | 4c9bea495ca8e2ba779d6c9fc952f0aca7770c72 /src/config/definitions.rs | |
parent | feat(videos): Allow limiting the number of videos to show (diff) | |
download | yt-43522ef7898c60ffd3e7c5ff056fd765635bbc5c.tar.gz yt-43522ef7898c60ffd3e7c5ff056fd765635bbc5c.zip |
fix(config): Check for wrong keys in the config file
Diffstat (limited to 'src/config/definitions.rs')
-rw-r--r-- | src/config/definitions.rs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/config/definitions.rs b/src/config/definitions.rs new file mode 100644 index 0000000..d37e6da --- /dev/null +++ b/src/config/definitions.rs @@ -0,0 +1,59 @@ +// 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>, +} |