Commit Graph

17 Commits

Author SHA1 Message Date
Cyphersnake
cb8f879b92 Add parse_env attribute to confique::Config macro
Since there is no established format for representing collections within env variables, to enable their support, the feature with a custom parser attribute added.

Add helpers for parsing env variables into collections

Improve rustdoc for `env_utils` functions

Improve `parse_env` example
2022-11-06 10:18:42 +04:00
Lukas Kalbertodt
d1a62e47eb Add map default values (e.g. default = { "foo": 33 })
This commit also adds a bunch of tests testing maps in several
situations.
2022-10-21 18:13:59 +02:00
Lukas Kalbertodt
4c40a35959 Move code around in macro crate 2022-10-17 11:55:29 +02:00
Lukas Kalbertodt
f0895a8b2f Add support for array default values 2022-10-17 11:29:38 +02:00
Lukas Kalbertodt
5c3315b015 Move to Rust edition 2021 2022-10-14 16:42:49 +02:00
Lukas Kalbertodt
a50f78e938 Add deserialize_with attribute that is forwarded to serde 2021-11-03 16:01:57 +01:00
Lukas Kalbertodt
a54042f8ca Revert "Replace some manual parsing code with darling helper crate"
This reverts commit e5af4f8efe.

The `darling` crate limits us to `syn::Meta` which is probably not
enough in the long run. There are a couple of other problems I have
with this crate and I think it's currently not worth. I'm considering
writing my own alternative...
2021-11-03 14:58:23 +01:00
Lukas Kalbertodt
e5af4f8efe Replace some manual parsing code with darling helper crate 2021-11-03 11:46:33 +01:00
Lukas Kalbertodt
313d143486 Remove Debug impls and syn's extra-trait features 2021-07-28 12:03:43 +02:00
Lukas Kalbertodt
78b2db26e1 Allow multiple attributes in one #[config(...)]
E.g. `#[config(env = "FOO", default = 3)]`
2021-07-27 16:14:49 +02:00
Lukas Kalbertodt
1e0ccf4279 Add check for = or null bytes in env variable key 2021-07-26 22:45:55 +02:00
Lukas Kalbertodt
db2aebc270 Parse #[env] attribute and representing it in meta types 2021-07-25 11:36:36 +02:00
Lukas Kalbertodt
ebd8aba2fa Disallow Option<_> type for fields with #[nested] or #[default]
Regarding nested fields: I cannot imagine a situation where that
distinction is useful. Also, specifying an empty nested object looks
stupid in TOML and YAML anyway.

Regarding default fields: If there is a default value, then the field
should not be declared as optional to begin with.
2021-07-25 10:46:06 +02:00
Lukas Kalbertodt
09cc848b94 Rename #[config(child)] to #[config(nested)] 2021-07-24 18:48:14 +02:00
Lukas Kalbertodt
8abc07bcda Add handling of nested configuration types via #[config(child)] 2021-05-14 22:13:31 +02:00
Lukas Kalbertodt
3fd3835fdf Error on unexpected extra tokens in attribute 2021-05-14 21:23:39 +02:00
Lukas Kalbertodt
0f37618c19 Rewrite everything to be based on derives (WIP) 2021-05-14 16:30:50 +02:00