Configuru is a library for configuration management. It is JSON/JSONC configuration loader and a clone project of AckeeCZ/configuru tool built for Node.js apps.
bash
cargo add configuru
.env.jsonc
in root of your project, add defaults or placeholders.jsonc
{
// Database secrets
"PASSWORD": "testtest",
// Sever secrets
"SERVER_HOST": "localhost",
"SERVER_PORT": 3000,
// Entities
"CUSTOMER": "{\"age\": 25, \"email\":\"test@example.org\"}" // customer related secrets
}
(optional) As a developer (or environment), create a custom override file (e.g. ~/.env/my-project.jsonc
) and save the path in your CFG_JSON_PATH
.
Usage
```rust // Import dependencies use serdederive::Deserialize; use configuru::{Loader, Hidden, configuru}; use serdejson;
// Define data structures you want to load from configuration file. Data types must match variables in configuration file.
struct Customer { email: String, age: i64, }
struct Config {
port: i64,
host: String,
password: Hidden
// Implement a conversion from Loader to your Config
impl From
rust
fn main() {
// Usage how to load config
let config: Config = configuru(".env.jsonc");
println!("Example: {:?}", config) // Example: Config { port: 3000, host: "localhost", password: <redacted>, customer: Customer { email: "test@example.org", age: 25 } }
}
This project is licensed under MIT.