mirror of
https://github.com/darwincereska/envkit.git
synced 2026-06-11 10:23:23 -05:00
feat: added examples
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# envkit
|
||||
|
||||
`envkit` is a small Rust crate for reading environment variables and converting them into typed values.
|
||||
|
||||
It keeps the API minimal:
|
||||
|
||||
- `EnvLoader::get` reads a required variable.
|
||||
- `EnvLoader::get_or` reads a variable with a fallback.
|
||||
- `EnvLoader::get_opt` returns `Option<T>`.
|
||||
- `with_prefix` lets you build loaders for namespaced variables like `APP_PORT` or `DB_HOST`.
|
||||
|
||||
## Supported types
|
||||
|
||||
`envkit` currently supports:
|
||||
|
||||
- `String`
|
||||
- `bool`
|
||||
- numeric types: `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `f32`, `f64`
|
||||
|
||||
Boolean parsing accepts:
|
||||
|
||||
- `true` / `false`
|
||||
- `1` / `0`
|
||||
- `t` / `f`
|
||||
|
||||
## Quick start
|
||||
|
||||
```rust
|
||||
use envkit::EnvLoader;
|
||||
|
||||
fn main() -> Result<(), envkit::error::EnvError> {
|
||||
let loader = EnvLoader;
|
||||
|
||||
let port: u16 = loader.get("PORT")?;
|
||||
let debug: bool = loader.get_or("DEBUG", false);
|
||||
let app_name: String = loader.get_opt("APP_NAME").unwrap_or_else(|| "envkit".to_string());
|
||||
|
||||
println!("port={port}, debug={debug}, app_name={app_name}");
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
|
||||
## Prefixed variables
|
||||
|
||||
```rust
|
||||
use envkit::EnvLoader;
|
||||
|
||||
fn main() -> Result<(), envkit::error::EnvError> {
|
||||
let loader = EnvLoader;
|
||||
let app = loader.with_prefix("APP_");
|
||||
|
||||
let host: String = app.get("HOST")?;
|
||||
let port: u16 = app.get_or("PORT", 8080);
|
||||
|
||||
println!("host={host}, port={port}");
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
|
||||
If you use the prefixed loader above, it reads `APP_HOST` and `APP_PORT`.
|
||||
|
||||
## Errors
|
||||
|
||||
`envkit` returns `EnvError` for two cases:
|
||||
|
||||
- `MissingVar` when the environment variable is not present
|
||||
- `Invalid` when parsing fails
|
||||
|
||||
## Examples
|
||||
|
||||
See the `examples/` folder for runnable usage samples.
|
||||
|
||||
## Development
|
||||
|
||||
Run the test suite with:
|
||||
|
||||
```bash
|
||||
cargo test
|
||||
```
|
||||
@@ -0,0 +1,15 @@
|
||||
use envkit::EnvLoader;
|
||||
|
||||
fn main() -> Result<(), envkit::error::EnvError> {
|
||||
let loader = EnvLoader;
|
||||
|
||||
let port: u16 = loader.get("PORT")?;
|
||||
let debug: bool = loader.get_or("DEBUG", false);
|
||||
let app_name: String = loader.get_opt("APP_NAME").unwrap_or_else(|| "envkit".to_string());
|
||||
|
||||
println!("port={port}");
|
||||
println!("debug={debug}");
|
||||
println!("app_name={app_name}");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
use envkit::EnvLoader;
|
||||
|
||||
fn main() -> Result<(), envkit::error::EnvError> {
|
||||
let loader = EnvLoader;
|
||||
let app = loader.with_prefix("APP_");
|
||||
|
||||
let host: String = app.get("HOST")?;
|
||||
let port: u16 = app.get_or("PORT", 8080);
|
||||
let enabled: bool = app.get_or("ENABLED", false);
|
||||
|
||||
println!("host={host}");
|
||||
println!("port={port}");
|
||||
println!("enabled={enabled}");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user