diff options
author | David Knaack <davidkna@users.noreply.github.com> | 2021-03-31 17:31:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-31 17:31:55 +0200 |
commit | d06ba072a88da96448260ff7c97174a08aad669a (patch) | |
tree | 30ff17a324703e767a8bb19b0114d7d6ca2aea0c /src/configs | |
parent | 2b15ca1a157fa21dd7d8432b2c51e1e2ecf87496 (diff) |
feat(config): allow printing default and computed config (#2521)
* feat: allow printing default and computed config
* fix custom modules
* actually fix custom modules
Diffstat (limited to 'src/configs')
57 files changed, 190 insertions, 120 deletions
diff --git a/src/configs/aws.rs b/src/configs/aws.rs index adc3868e8..8cef66362 100644 --- a/src/configs/aws.rs +++ b/src/configs/aws.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; use std::collections::HashMap; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct AwsConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/battery.rs b/src/configs/battery.rs index 578fc040b..db313daa7 100644 --- a/src/configs/battery.rs +++ b/src/configs/battery.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct BatteryConfig<'a> { pub full_symbol: &'a str, pub charging_symbol: &'a str, @@ -32,7 +33,7 @@ impl<'a> Default for BatteryConfig<'a> { } } -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Default, Serialize)] pub struct BatteryDisplayConfig<'a> { pub threshold: i64, pub style: &'a str, diff --git a/src/configs/character.rs b/src/configs/character.rs index 3e7153370..19204fe3c 100644 --- a/src/configs/character.rs +++ b/src/configs/character.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] 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 8b9f51c85..d225b0d90 100644 --- a/src/configs/cmake.rs +++ b/src/configs/cmake.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct CMakeConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/cmd_duration.rs b/src/configs/cmd_duration.rs index 096fbf8e1..be5d2f732 100644 --- a/src/configs/cmd_duration.rs +++ b/src/configs/cmd_duration.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct CmdDurationConfig<'a> { pub min_time: i64, pub format: &'a str, diff --git a/src/configs/conda.rs b/src/configs/conda.rs index 54e9434ef..623b4fc67 100644 --- a/src/configs/conda.rs +++ b/src/configs/conda.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct CondaConfig<'a> { pub truncation_length: usize, pub format: &'a str, diff --git a/src/configs/crystal.rs b/src/configs/crystal.rs index ae3c4da75..e5b61476e 100644 --- a/src/configs/crystal.rs +++ b/src/configs/crystal.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct CrystalConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/custom.rs b/src/configs/custom.rs index df6d03de5..bced89319 100644 --- a/src/configs/custom.rs +++ b/src/configs/custom.rs @@ -1,29 +1,22 @@ use crate::config::{ModuleConfig, VecOr}; +use serde::{self, Serialize}; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, Default, PartialEq)] -pub struct Files<'a>(pub Vec<&'a str>); - -#[derive(Clone, Default, PartialEq)] -pub struct Extensions<'a>(pub Vec<&'a str>); - -#[derive(Clone, Default, PartialEq)] -pub struct Directories<'a>(pub Vec<&'a str>); - -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct CustomConfig<'a> { pub format: &'a str, pub symbol: &'a str, pub command: &'a str, + #[serde(skip_serializing_if = "Option::is_none")] pub when: Option<&'a str>, pub shell: VecOr<&'a str>, pub description: &'a str, pub style: &'a str, pub disabled: bool, - pub files: Files<'a>, - pub extensions: Extensions<'a>, - pub directories: Directories<'a>, + pub files: Vec<&'a str>, + pub extensions: Vec<&'a str>, + pub directories: Vec<&'a str>, } impl<'a> Default for CustomConfig<'a> { @@ -37,57 +30,9 @@ impl<'a> Default for CustomConfig<'a> { description: "<custom config>", style: "green bold", disabled: false, - files: Files::default(), - extensions: Extensions::default(), - directories: Directories::default(), + files: Vec::default(), + extensions: Vec::default(), + directories: Vec::default(), } } } - -impl<'a> ModuleConfig<'a> for Files<'a> { - fn from_config(config: &'a toml::Value) -> Option<Self> { - let mut files = Vec::new(); - - for item in config.as_array()? { - if let Some(file) = item.as_str() { - files.push(file); - } else { - log::warn!("Unexpected file {:?}", item); - } - } - - Some(Files(files)) - } -} - -impl<'a> ModuleConfig<'a> for Extensions<'a> { - fn from_config(config: &'a toml::Value) -> Option<Self> { - let mut extensions = Vec::new(); - - for item in config.as_array()? { - if let Some(file) = item.as_str() { - extensions.push(file); - } else { - log::warn!("Unexpected extension {:?}", item); - } - } - - Some(Extensions(extensions)) - } -} - -impl<'a> ModuleConfig<'a> for Directories<'a> { - fn from_config(config: &'a toml::Value) -> Option<Self> { - let mut directories = Vec::new(); - - for item in config.as_array()? { - if let Some(file) = item.as_str() { - directories.push(file); - } else { - log::warn!("Unexpected directory {:?}", item); - } - } - - Some(Directories(directories)) - } -} diff --git a/src/configs/dart.rs b/src/configs/dart.rs index ef8e16bba..94f5112e4 100644 --- a/src/configs/dart.rs +++ b/src/configs/dart.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct DartConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/directory.rs b/src/configs/directory.rs index 47fa8bdcf..9f1b27ad4 100644 --- a/src/configs/directory.rs +++ b/src/configs/directory.rs @@ -1,9 +1,10 @@ use crate::config::ModuleConfig; use indexmap::IndexMap; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] 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 7d8757d4d..b026acda9 100644 --- a/src/configs/docker_context.rs +++ b/src/configs/docker_context.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] 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 33118e7c9..05438f363 100644 --- a/src/configs/dotnet.rs +++ b/src/configs/dotnet.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct DotnetConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/elixir.rs b/src/configs/elixir.rs index 3fddbb979..9eb5b347c 100644 --- a/src/configs/elixir.rs +++ b/src/configs/elixir.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct ElixirConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/elm.rs b/src/configs/elm.rs index 4b582867b..d97cddd9c 100644 --- a/src/configs/elm.rs +++ b/src/configs/elm.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct ElmConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/env_var.rs b/src/configs/env_var.rs index 07aef6090..30ab72e95 100644 --- a/src/configs/env_var.rs +++ b/src/configs/env_var.rs @@ -1,12 +1,15 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct EnvVarConfig<'a> { pub symbol: &'a str, pub style: &'a str, + #[serde(skip_serializing_if = "Option::is_none")] pub variable: Option<&'a str>, + #[serde(skip_serializing_if = "Option::is_none")] pub default: Option<&'a str>, pub format: &'a str, pub disabled: bool, diff --git a/src/configs/erlang.rs b/src/configs/erlang.rs index 9e04105df..b0a7515ef 100644 --- a/src/configs/erlang.rs +++ b/src/configs/erlang.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct ErlangConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/gcloud.rs b/src/configs/gcloud.rs index d3f3c2028..fd291badf 100644 --- a/src/configs/gcloud.rs +++ b/src/configs/gcloud.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; use std::collections::HashMap; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct GcloudConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/git_branch.rs b/src/configs/git_branch.rs index 87ab33f1a..d9c40c9ad 100644 --- a/src/configs/git_branch.rs +++ b/src/configs/git_branch.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct GitBranchConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/git_commit.rs b/src/configs/git_commit.rs index d07a9d765..01c4c3ee3 100644 --- a/src/configs/git_commit.rs +++ b/src/configs/git_commit.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct GitCommitConfig<'a> { pub commit_hash_length: usize, pub format: &'a str, diff --git a/src/configs/git_state.rs b/src/configs/git_state.rs index 5bc214dd4..d0773dcdd 100644 --- a/src/configs/git_state.rs +++ b/src/configs/git_state.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct GitStateConfig<'a> { pub rebase: &'a str, pub merge: &'a str, diff --git a/src/configs/git_status.rs b/src/configs/git_status.rs index e2b2f8f78..9def0ca58 100644 --- a/src/configs/git_status.rs +++ b/src/configs/git_status.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct GitStatusConfig<'a> { pub format: &'a str, pub style: &'a str, diff --git a/src/configs/go.rs b/src/configs/go.rs index 9db7f28f7..c4fb3dca5 100644 --- a/src/configs/go.rs +++ b/src/configs/go.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct GoConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/helm.rs b/src/configs/helm.rs index dfa2b46be..a99ad7aba 100644 --- a/src/configs/helm.rs +++ b/src/configs/helm.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct HelmConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/hg_branch.rs b/src/configs/hg_branch.rs index c06f9a1d0..cb50afc52 100644 --- a/src/configs/hg_branch.rs +++ b/src/configs/hg_branch.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct HgBranchConfig<'a> { pub symbol: &'a str, pub style: &'a str, diff --git a/src/configs/hostname.rs b/src/configs/hostname.rs index f1e91bea0..074fabcaf 100644 --- a/src/configs/hostname.rs +++ b/src/configs/hostname.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct HostnameConfig<'a> { pub ssh_only: bool, pub trim_at: &'a str, diff --git a/src/configs/java.rs b/src/configs/java.rs index 26e1e4ed4..6de40a686 100644 --- a/src/configs/java.rs +++ b/src/configs/java.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct JavaConfig<'a> { pub disabled: bool, pub format: &'a str, diff --git a/src/configs/jobs.rs b/src/configs/jobs.rs index d98458edd..24d8e076b 100644 --- a/src/configs/jobs.rs +++ b/src/configs/jobs.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct JobsConfig<'a> { pub threshold: i64, pub format: &'a str, diff --git a/src/configs/julia.rs b/src/configs/julia.rs index 1f7f3785e..0ee98614d 100644 --- a/src/configs/julia.rs +++ b/src/configs/julia.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct JuliaConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/kotlin.rs b/src/configs/kotlin.rs index 401616f48..b609c033b 100644 --- a/src/configs/kotlin.rs +++ b/src/configs/kotlin.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct KotlinConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/kubernetes.rs b/src/configs/kubernetes.rs index 8d06d3340..04740c4f2 100644 --- a/src/configs/kubernetes.rs +++ b/src/configs/kubernetes.rs @@ -1,9 +1,10 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; use std::collections::HashMap; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct KubernetesConfig<'a> { pub symbol: &'a str, pub format: &'a str, diff --git a/src/configs/lua.rs b/src/configs/lua.rs index 592b62da9..a70e30183 100644 --- a/src/configs/lua.rs +++ b/src/configs/lua.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct LuaConfig<'a> { pub format: &'a str, pub symbol: &'a str, diff --git a/src/configs/memory_usage.rs b/src/configs/memory_usage.rs index 65afe7d20..d89283e0b 100644 --- a/src/configs/memory_usage.rs +++ b/src/configs/memory_usage.rs @@ -1,8 +1,9 @@ use crate::config::ModuleConfig; +use serde::Serialize; use starship_module_config_derive::ModuleConfig; -#[derive(Clone, ModuleConfig)] +#[derive(Clone, ModuleConfig, Serialize)] pub struct MemoryConfig<'a> { pub threshold: i64, pub format: &'a str, diff --git a/src/configs/mod.rs b/src/configs/mod.rs index 7f5ebf508..70a55c681 100644 --- a/src/configs/mod.rs +++ b/src/configs/mod.rs @@ -1,3 +1,8 @@ +use crate::config::ModuleConfig; +use indexmap::IndexMap; +use serde::{self, Serialize}; |