mirror of
https://github.com/kristoferssolo/filecaster.git
synced 2025-10-21 19:00:34 +00:00
fix: feature derive clause
This commit is contained in:
parent
32ad6514ab
commit
dabacf02df
4
Cargo.lock
generated
4
Cargo.lock
generated
@ -50,7 +50,7 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "filecaster"
|
name = "filecaster"
|
||||||
version = "0.2.1"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"filecaster-derive",
|
"filecaster-derive",
|
||||||
"merge",
|
"merge",
|
||||||
@ -62,7 +62,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "filecaster-derive"
|
name = "filecaster-derive"
|
||||||
version = "0.2.1"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"claims",
|
"claims",
|
||||||
"filecaster",
|
"filecaster",
|
||||||
|
|||||||
@ -4,7 +4,7 @@ members = ["filecaster", "filecaster-derive"]
|
|||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
filecaster-derive = { version = "0.2", path = "filecaster-derive" }
|
filecaster-derive = { version = "0.2", path = "filecaster-derive" }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"], default-features = false }
|
||||||
merge = "0.2"
|
merge = "0.2"
|
||||||
# dev-dependencies
|
# dev-dependencies
|
||||||
filecaster = { path = "filecaster" }
|
filecaster = { path = "filecaster" }
|
||||||
|
|||||||
@ -12,7 +12,7 @@ Procedural macro to derive configuration from files, with optional merging capab
|
|||||||
|
|
||||||
```toml
|
```toml
|
||||||
[dependencies]
|
[dependencies]
|
||||||
filecaster = "0.1"
|
filecaster = "0.2"
|
||||||
```
|
```
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "filecaster-derive"
|
name = "filecaster-derive"
|
||||||
version = "0.2.1"
|
version = "0.2.2"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
authors = ["Kristofers Solo <dev@kristofers.xyz>"]
|
authors = ["Kristofers Solo <dev@kristofers.xyz>"]
|
||||||
description = "Procedural derive macro for `filecaster`: automatically implement `FromFile` for your structs."
|
description = "Procedural derive macro for `filecaster`: automatically implement `FromFile` for your structs."
|
||||||
|
|||||||
@ -6,6 +6,7 @@ use syn::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
const WITH_MERGE: bool = cfg!(feature = "merge");
|
const WITH_MERGE: bool = cfg!(feature = "merge");
|
||||||
|
const WITH_SERDE: bool = cfg!(feature = "serde");
|
||||||
|
|
||||||
/// Entry point: generate the shadow struct + `FromFile` impls.
|
/// Entry point: generate the shadow struct + `FromFile` impls.
|
||||||
pub fn impl_from_file(input: &DeriveInput) -> Result<TokenStream> {
|
pub fn impl_from_file(input: &DeriveInput) -> Result<TokenStream> {
|
||||||
@ -123,11 +124,16 @@ fn process_fields(fields: &FieldsNamed) -> Result<(Vec<TokenStream>, Vec<TokenSt
|
|||||||
|
|
||||||
/// Derive clause for the shadow struct
|
/// Derive clause for the shadow struct
|
||||||
fn build_derive_clause() -> TokenStream {
|
fn build_derive_clause() -> TokenStream {
|
||||||
quote! {
|
let mut traits = vec![quote! {Debug}, quote! {Clone}, quote! {Default}];
|
||||||
#[derive(Debug, Clone, Default)]
|
if WITH_SERDE {
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
traits.extend([quote! { serde::Deserialize }, quote! { serde::Serialize }]);
|
||||||
#[cfg_attr(feature = "merge", derive(merge::Merge))]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if WITH_MERGE {
|
||||||
|
traits.push(quote! { merge::Merge });
|
||||||
|
}
|
||||||
|
|
||||||
|
quote! { #[derive( #(#traits),* )] }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Add Default bound to every generic parameter
|
/// Add Default bound to every generic parameter
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "filecaster"
|
name = "filecaster"
|
||||||
version = "0.2.1"
|
version = "0.2.2"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
authors = ["Kristofers Solo <dev@kristofers.xyz>"]
|
authors = ["Kristofers Solo <dev@kristofers.xyz>"]
|
||||||
description = "Procedural macro to derive configuration from files, with optional merging capabilities."
|
description = "Procedural macro to derive configuration from files, with optional merging capabilities."
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user