From 8d07a86fc4fcbd1121c4c99b4b30189546ba1f6c Mon Sep 17 00:00:00 2001 From: Konstantin Fickel Date: Sun, 29 Mar 2026 19:14:51 +0200 Subject: [PATCH] chore: switch from yaml to toml --- Cargo.lock | 74 ++++++++++++++++++++++++++++++++++++------------- Cargo.toml | 2 +- README.md | 2 +- REQUIREMENTS.md | 6 ++-- flake.nix | 4 +-- src/config.rs | 6 ++-- src/error.rs | 4 +-- 7 files changed, 66 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f20392..ba51b84 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -678,12 +678,6 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - [[package]] name = "same-file" version = "1.0.6" @@ -743,16 +737,12 @@ dependencies = [ ] [[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" +name = "serde_spanned" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ - "indexmap", - "itoa", - "ryu", "serde", - "unsafe-libyaml", ] [[package]] @@ -777,9 +767,9 @@ dependencies = [ "pulldown-cmark", "regex", "serde", - "serde_yaml", "tempfile", "thiserror 2.0.18", + "toml", "walkdir", ] @@ -894,6 +884,47 @@ dependencies = [ "syn", ] +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "unicase" version = "2.9.0" @@ -930,12 +961,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - [[package]] name = "utf8parse" version = "0.2.2" @@ -1198,6 +1223,15 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + [[package]] name = "wit-bindgen" version = "0.51.0" diff --git a/Cargo.toml b/Cargo.toml index bc2aaba..d933964 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ repository = "https://github.com/konstantinfickel/streamd" clap = { version = "4", features = ["derive", "env"] } clap_complete = "4" serde = { version = "1", features = ["derive"] } -serde_yaml = "0.9" +toml = "0.8" thiserror = "2" miette = { version = "7", features = ["fancy"] } pulldown-cmark = "0.12" diff --git a/README.md b/README.md index 9e5fa28..474663c 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Within files, `@`-prefixed markers at the beginning of paragraphs or headings de ## Configuration -Streamd reads its configuration from `~/.config/streamd/config.yaml` (XDG standard). The main setting is `base_folder`, which points to the directory containing your stream files (defaults to the current working directory). +Streamd reads its configuration from `~/.config/streamd/config.toml` (XDG standard). The main setting is `base_folder`, which points to the directory containing your stream files (defaults to the current working directory). ## Usage diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md index aae1809..2ba44bd 100644 --- a/REQUIREMENTS.md +++ b/REQUIREMENTS.md @@ -352,10 +352,10 @@ Provide recursive search through the shard tree: ### R22: Config File Location -The application configuration is stored at `~/.config/streamd/config.yaml`: +The application configuration is stored at `~/.config/streamd/config.toml`: -```yaml -base_folder: /path/to/stream/files +```toml +base_folder = "/path/to/stream/files" ``` ### R23: Environment Variable Override diff --git a/flake.nix b/flake.nix index c77eb59..d0c3479 100644 --- a/flake.nix +++ b/flake.nix @@ -149,8 +149,8 @@ home.packages = [ cfg.package ]; - xdg.configFile."streamd/config.yaml".source = - (pkgs.formats.yaml { }).generate "streamd-configuration" + xdg.configFile."streamd/config.toml".source = + (pkgs.formats.toml { }).generate "streamd-configuration" { base_folder = cfg.base-folder; }; diff --git a/src/config.rs b/src/config.rs index 385ecb1..c828ba9 100644 --- a/src/config.rs +++ b/src/config.rs @@ -27,7 +27,7 @@ impl Settings { if config_path.exists() { let content = fs::read_to_string(&config_path)?; - let settings: Settings = serde_yaml::from_str(&content)?; + let settings: Settings = toml::from_str(&content)?; Ok(settings) } else { Ok(Settings::default()) @@ -36,9 +36,9 @@ impl Settings { fn config_path() -> PathBuf { if let Some(proj_dirs) = ProjectDirs::from("", "", "streamd") { - proj_dirs.config_dir().join("config.yaml") + proj_dirs.config_dir().join("config.toml") } else { - PathBuf::from("~/.config/streamd/config.yaml") + PathBuf::from("~/.config/streamd/config.toml") } } } diff --git a/src/error.rs b/src/error.rs index f180b35..c76801c 100644 --- a/src/error.rs +++ b/src/error.rs @@ -14,8 +14,8 @@ pub enum StreamdError { #[error("IO error: {0}")] IoError(#[from] std::io::Error), - #[error("YAML error: {0}")] - YamlError(#[from] serde_yaml::Error), + #[error("TOML error: {0}")] + TomlError(#[from] toml::de::Error), } impl From for miette::Report {