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