From 189ce814d0b0165c8bbdc5be7ea6eb2ef6b9fb19 Mon Sep 17 00:00:00 2001 From: Abraham Toriz Date: Sat, 10 Sep 2022 23:31:08 -0400 Subject: [PATCH] restore ability to pass config to custom formatters --- CHANGELOG.md | 4 ++ Cargo.lock | 82 ++++++++++++++++++++-------------------- Cargo.toml | 2 +- src/config.rs | 3 ++ src/formatters/chart.rs | 1 + src/formatters/custom.rs | 8 +--- 6 files changed, 53 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52c64c9..de4a7ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changes +## 1.4.1 + +- Fix config not being passed to custom formatters + ## 1.4.0 - Brand new `chart` formatter that shows your work history diff --git a/Cargo.lock b/Cargo.lock index e8451b4..6a275da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -142,7 +142,7 @@ checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" dependencies = [ "bstr", "csv-core", - "itoa", + "itoa 0.4.7", "ryu", "serde", ] @@ -192,12 +192,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "dtoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" - [[package]] name = "either" version = "1.6.1" @@ -271,6 +265,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg 1.1.0", + "hashbrown", +] + [[package]] name = "isolang" version = "1.0.0" @@ -296,6 +300,12 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +[[package]] +name = "itoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" + [[package]] name = "lazy_static" version = "1.4.0" @@ -319,12 +329,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "linked-hash-map" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" - [[package]] name = "match_cfg" version = "0.1.0" @@ -435,11 +439,11 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.28" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -680,18 +684,18 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "serde" -version = "1.0.126" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" dependencies = [ "proc-macro2", "quote", @@ -704,21 +708,22 @@ version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28c5e91e4240b46c4c19219d6cc84784444326131a4210f496f948d5cc827a29" dependencies = [ - "itoa", + "itoa 0.4.7", "ryu", "serde", ] [[package]] name = "serde_yaml" -version = "0.8.17" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15654ed4ab61726bf918a39cb8d98a2e2995b002387807fa6ba58fdf7f59bb23" +checksum = "89f31df3f50926cdf2855da5fd8812295c34752cb20438dae42a67f79e021ac3" dependencies = [ - "dtoa", - "linked-hash-map", + "indexmap", + "itoa 1.0.3", + "ryu", "serde", - "yaml-rust", + "unsafe-libyaml", ] [[package]] @@ -747,13 +752,13 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "syn" -version = "1.0.74" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -865,6 +870,12 @@ dependencies = [ "serde", ] +[[package]] +name = "unicode-ident" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" + [[package]] name = "unicode-linebreak" version = "0.1.2" @@ -881,10 +892,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" [[package]] -name = "unicode-xid" +name = "unsafe-libyaml" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "931179334a56395bcf64ba5e0ff56781381c1a5832178280c7d7f91d1679aeb0" [[package]] name = "vcpkg" @@ -931,12 +942,3 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] diff --git a/Cargo.toml b/Cargo.toml index 53ff675..c826851 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ version = "1.4.0" clap = "2" thiserror = "1" directories = "3" -serde_yaml = "0.8" +serde_yaml = "0.9" toml = "0.5" itertools = "0.10" textwrap = "0.14" diff --git a/src/config.rs b/src/config.rs index 65f1db1..525f690 100644 --- a/src/config.rs +++ b/src/config.rs @@ -84,6 +84,9 @@ impl Default for ChartFormatterSettings { #[serde(default)] pub struct FormattersSettings { pub chart: ChartFormatterSettings, + + #[serde(flatten)] + pub extra: HashMap, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] diff --git a/src/formatters/chart.rs b/src/formatters/chart.rs index 361dfce..bdd020a 100644 --- a/src/formatters/chart.rs +++ b/src/formatters/chart.rs @@ -210,6 +210,7 @@ mod tests { weekly_goal_hours: 20, ..Default::default() }, + extra: HashMap::new(), }, ..Default::default() }; diff --git a/src/formatters/custom.rs b/src/formatters/custom.rs index 855db20..f9090a2 100644 --- a/src/formatters/custom.rs +++ b/src/formatters/custom.rs @@ -32,12 +32,8 @@ fn is_valid_formatter_name(formatter: &str) -> bool { } fn get_formatter_config(config: &Config, formatter: &str) -> String { - if let Some(formatters) = config.extra.get("formatters") { - if let Some(config_for_formatter) = formatters.get(formatter) { - config_for_formatter.to_string() - } else { - String::from("{}") - } + if let Some(config_for_formatter) = config.formatters.extra.get(formatter) { + config_for_formatter.to_string() } else { String::from("{}") }