feat(config): allow printing default and computed config (#2521)

* feat: allow printing default and computed config

* fix custom modules

* actually fix custom modules
This commit is contained in:
David Knaack
2021-03-31 17:31:55 +02:00
committed by GitHub
parent 2b15ca1a15
commit d06ba072a8
66 changed files with 252 additions and 157 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "starship_module_config_derive"
version = "0.1.2"
version = "0.1.3"
edition = "2018"
authors = ["Matan Kushner <hello@matchai.me>"]
homepage = "https://starship.rs"
+1 -14
View File
@@ -18,29 +18,20 @@ fn impl_module_config(dinput: DeriveInput) -> proc_macro::TokenStream {
if let syn::Data::Struct(data) = dinput.data {
if let syn::Fields::Named(fields_named) = data.fields {
let mut load_tokens = quote! {};
let mut from_tokens = quote! {};
for field in fields_named.named.iter() {
let ident = field.ident.as_ref().unwrap();
let ty = &field.ty;
let new_load_tokens = quote! {
if let Some(config_str) = config.get(stringify!(#ident)) {
new_module_config.#ident = new_module_config.#ident.load_config(config_str);
}
};
let new_from_tokens = quote! {
#ident: config.get(stringify!(#ident)).and_then(<#ty>::from_config)?,
};
load_tokens = quote! {
#load_tokens
#new_load_tokens
};
from_tokens = quote! {
#from_tokens
#new_from_tokens
}
}
load_config = quote! {
@@ -60,11 +51,7 @@ fn impl_module_config(dinput: DeriveInput) -> proc_macro::TokenStream {
};
from_config = quote! {
fn from_config(config: &'a toml::Value) -> Option<Self> {
let config = config.as_table()?;
Some(#struct_ident {
#from_tokens
})
Some(Self::default().load_config(config))
}
};
}