diff options
author | David Knaack <davidkna@users.noreply.github.com> | 2022-03-26 10:42:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-26 10:42:19 +0100 |
commit | 2d4b183fce8c9de0d9548f7087786bc919cae7b4 (patch) | |
tree | 924114efeef59bfe80a0b9f5fec4fdb7acf2800b /src/configs | |
parent | 0fb421969058ec07a09f7c927dddc1258de75631 (diff) |
refactor: replace module_config_derive with serde (#3786)
* refactor: replace module_config_derive with serde
Changes include:
* Removing `starship_module_config_derive` and replacing it with `serde::Deserialize`
* Removing `RootModuleConfig::load_config`. While potentially useful, it was only used in tests. And it would require something like `serde::DeserializeSeed` which is not derived by serde.
* Merging `RootModuleConfig` into `ModuleConfig`
* Implementing a `ValueDeserializer` that holds a reference to a `toml::Value` in `serde_utils.rs`
* Deserialization errors (invalid type) are now logged and include the current key and the struct names
* Unknown keys are now considered an error. "Did you mean?"-messages are still possible
* fix typo
Co-authored-by: Matan Kushner <hello@matchai.dev>
Co-authored-by: Matan Kushner <hello@matchai.dev>
Diffstat (limited to 'src/configs')
74 files changed, 298 insertions, 526 deletions
diff --git a/src/configs/aws.rs b/src/configs/aws.rs index 69092abb6..5e492d394 100644 --- a/src/configs/aws.rs +++ b/src/configs/aws.rs @@ -1,9 +1,8 @@ -use crate::config::ModuleConfig; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; +use serde::{Deserialize, Serialize}; use std::collections::HashMap; -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct AwsConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/azure.rs b/src/configs/azure.rs index c22fad981..bc4fadde2 100644 --- a/src/configs/azure.rs +++ b/src/configs/azure.rs @@ -1,8 +1,7 @@ -use crate::config::ModuleConfig; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; +use serde::{Deserialize, Serialize}; -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct AzureConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/battery.rs b/src/configs/battery.rs index 817c2afe7..9058aadb9 100644 --- a/src/configs/battery.rs +++ b/src/configs/battery.rs @@ -1,15 +1,14 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct BatteryConfig<'a> { pub full_symbol: &'a str, pub charging_symbol: &'a str, pub discharging_symbol: &'a str, pub unknown_symbol: &'a str, pub empty_symbol: &'a str, + #[serde(borrow)] pub display: Vec<BatteryDisplayConfig<'a>>, pub disabled: bool, pub format: &'a str, @@ -30,7 +29,8 @@ impl<'a> Default for BatteryConfig<'a> { } } -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct BatteryDisplayConfig<'a> { pub threshold: i64, pub style: &'a str, diff --git a/src/configs/buf.rs b/src/configs/buf.rs index f4fd0a18f..531ce4dfc 100644 --- a/src/configs/buf.rs +++ b/src/configs/buf.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct BufConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/c.rs b/src/configs/c.rs index 14a230ff9..fda0a17ab 100644 --- a/src/configs/c.rs +++ b/src/configs/c.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct CConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/character.rs b/src/configs/character.rs index 19204fe3c..91bba8c23 100644 --- a/src/configs/character.rs +++ b/src/configs/character.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct CharacterConfig<'a> { pub format: &'a str, pub success_symbol: &'a str, diff --git a/src/configs/cmake.rs b/src/configs/cmake.rs index 8ba2c6a94..51140c8f3 100644 --- a/src/configs/cmake.rs +++ b/src/configs/cmake.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct CMakeConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/cmd_duration.rs b/src/configs/cmd_duration.rs index 44c0c6994..ace907305 100644 --- a/src/configs/cmd_duration.rs +++ b/src/configs/cmd_duration.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct CmdDurationConfig<'a> { pub min_time: i64, pub format: &'a str, diff --git a/src/configs/cobol.rs b/src/configs/cobol.rs index b56123987..da41b96f3 100644 --- a/src/configs/cobol.rs +++ b/src/configs/cobol.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct CobolConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/conda.rs b/src/configs/conda.rs index 623b4fc67..df88312d1 100644 --- a/src/configs/conda.rs +++ b/src/configs/conda.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct CondaConfig<'a> { pub truncation_length: usize, pub format: &'a str, diff --git a/src/configs/container.rs b/src/configs/container.rs index 107fdd28f..dd777b48a 100644 --- a/src/configs/container.rs +++ b/src/configs/container.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct ContainerConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/crystal.rs b/src/configs/crystal.rs index ec90b773e..7c7ece703 100644 --- a/src/configs/crystal.rs +++ b/src/configs/crystal.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct CrystalConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/custom.rs b/src/configs/custom.rs index d1f758aa4..a38d60a75 100644 --- a/src/configs/custom.rs +++ b/src/configs/custom.rs @@ -1,9 +1,9 @@ -use crate::config::{ModuleConfig, VecOr}; +use crate::config::VecOr; -use serde::{self, Serialize}; -use starship_module_config_derive::ModuleConfig; +use serde::{self, Deserialize, Serialize}; -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct CustomConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/dart.rs b/src/configs/dart.rs index 8edb214bd..cc235d488 100644 --- a/src/configs/dart.rs +++ b/src/configs/dart.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct DartConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/deno.rs b/src/configs/deno.rs index c7b3e45b4..f3f955ec3 100644 --- a/src/configs/deno.rs +++ b/src/configs/deno.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct DenoConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/directory.rs b/src/configs/directory.rs index 0d1d9217e..89c98518a 100644 --- a/src/configs/directory.rs +++ b/src/configs/directory.rs @@ -1,10 +1,9 @@ -use crate::config::ModuleConfig; use indexmap::IndexMap; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; +use serde::{Deserialize, Serialize}; -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct DirectoryConfig<'a> { pub truncation_length: i64, pub truncate_to_repo: bool, diff --git a/src/configs/docker_context.rs b/src/configs/docker_context.rs index b026acda9..73603ac34 100644 --- a/src/configs/docker_context.rs +++ b/src/configs/docker_context.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct DockerContextConfig<'a> { pub symbol: &'a str, pub style: &'a str, diff --git a/src/configs/dotnet.rs b/src/configs/dotnet.rs index 0d29e178e..da2137655 100644 --- a/src/configs/dotnet.rs +++ b/src/configs/dotnet.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct DotnetConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/elixir.rs b/src/configs/elixir.rs index d4ed7161e..fac7983c2 100644 --- a/src/configs/elixir.rs +++ b/src/configs/elixir.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct ElixirConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/elm.rs b/src/configs/elm.rs index 34d6b6260..1b5357d43 100644 --- a/src/configs/elm.rs +++ b/src/configs/elm.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct ElmConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/env_var.rs b/src/configs/env_var.rs index 30ab72e95..0b5c663b7 100644 --- a/src/configs/env_var.rs +++ b/src/configs/env_var.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct EnvVarConfig<'a> { pub symbol: &'a str, pub style: &'a str, diff --git a/src/configs/erlang.rs b/src/configs/erlang.rs index 8ab6f0764..06888b88a 100644 --- a/src/configs/erlang.rs +++ b/src/configs/erlang.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct ErlangConfig<'a> { pub format: &'a str, pub version_format: &'a str, diff --git a/src/configs/fill.rs b/src/configs/fill.rs index fc0af31fa..63cd4424c 100644 --- a/src/configs/fill.rs +++ b/src/configs/fill.rs @@ -1,9 +1,7 @@ -use crate::config::ModuleConfig; +use serde::{Deserialize, Serialize}; -use serde::Serialize; -use starship_module_config_derive::ModuleConfig; - -#[derive(Clone, ModuleConfig, Serialize)] +#[derive(Clone, Deserialize, Serialize)] +#[serde(default)] pub struct FillConfig<'a> { pub style: &'a str, pub symbol: &'a str, diff --git a/src/configs/gcloud.rs b/src/configs/gcloud.rs index 853cd0148..e298a0446 100644 --- a/src/configs/gcloud.rs +++ b/src/configs/gcloud.rs< |