Comments (4)
Ideally, it would be style-preserving too
from figment.
That is, set a nested value using the path to the key.
Yes. This is the way string keys work everywhere. See the Serialized
provider docs as an example. For instance, (key, value)
, built using Serialize
, works as expected. That is, figment.merge(("a.b", 12))
replaces b
in a
with 12
.
what's the best way to approach this using your library?
Parse the CLI value(s) using something like clap
, then simply do something like:
// The value can be anything `Serialize`. `figment::value::Value` is a good choice.
let overrides: Vec<(String, figment::value::Value)> = /* result from CLI parsing */;
let mut figment = /* whatever your figment looks like */;
for override in overrides {
figment = figment.merge(override);
}
You can even add provenance information to these CLI values by implementing a custom provider, which will give you perfect error messages should something go wrong, but it's not required.
from figment.
ah nice, that's quite powerful. Did I miss this in the docs?
from figment.
It is documented, though perhaps not as well as it should be. I've added this detail to more places in the docs.
from figment.
Related Issues (20)
- Support YAML aliases/anchors HOT 2
- Is this abandoned? HOT 1
- `serde_yaml` version range HOT 1
- Reading single line from file HOT 5
- Unable to prioritise clap arguments over environment variables HOT 2
- How to handle replacement of single config entries inside a nested configuration? HOT 2
- Option to append vectors instead of replacing them. HOT 12
- Strange behavior with figment.join HOT 1
- Question: Iterator over values and best practices for modification of config HOT 2
- Question: How can I load string vectors from the environment? HOT 2
- Improve clap support recipes HOT 5
- Defaults for list of nested objects HOT 2
- Default value not being loaded HOT 4
- `Env` provider deserializes into unsigned int by force HOT 2
- Get names of expected environment variables HOT 1
- INI format support HOT 3
- Expose coalesce module HOT 3
- kebab-case environment variable fails to be used HOT 5
- Question: Serialize the profile name when extracting HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from figment.