64 lines
1.5 KiB
Markdown
64 lines
1.5 KiB
Markdown
|
# Envhead
|
||
|
|
||
|
Envhead is a crate that creates environment variable names using a static prefix. The desired prefix is defined in your build script `build.rs`.
|
||
|
|
||
|
### Usage
|
||
|
|
||
|
First, you should define the prefix in your `build.rs` file. In this example, we will use `MY_APP` as the prefix:
|
||
|
|
||
|
```rust
|
||
|
fn main() {
|
||
|
println!("cargo:rustc-env=ENV_HEAD_PREFIX=MY_APP");
|
||
|
}
|
||
|
```
|
||
|
|
||
|
When the `ENV_HEAD_PREFIX` variable is not defined, `ENV` is used as the default prefix.
|
||
|
|
||
|
Then, in your code, you can use the `envhead!` macro to create environment variable names.
|
||
|
|
||
|
```rust
|
||
|
use envhead::envhead;
|
||
|
|
||
|
fn main() {
|
||
|
let env_var = envhead!("server_port");
|
||
|
|
||
|
// Prints "MY_APP_SERVER_PORT":
|
||
|
println!("{}", env_var);
|
||
|
}
|
||
|
```
|
||
|
|
||
|
You might find it useful to use `envhead` together with `clap` to create environment variable names for your command line arguments:
|
||
|
|
||
|
```rust
|
||
|
use clap::Args;
|
||
|
use envhead::envhead;
|
||
|
|
||
|
#[derive(Debug, Args)]
|
||
|
pub struct ServerArgs {
|
||
|
#[arg(
|
||
|
short = 'p', long,
|
||
|
required = false,
|
||
|
value_name = "port",
|
||
|
value_hint = clap::ValueHint::Other,
|
||
|
help = "The server's port.",
|
||
|
default_value_t = 8000,
|
||
|
env = envhead!("server_port"),
|
||
|
)]
|
||
|
pub port: u16,
|
||
|
|
||
|
#[arg(
|
||
|
long,
|
||
|
required = true,
|
||
|
value_name = "SECRET_TOKEN",
|
||
|
value_hint = clap::ValueHint::Other,
|
||
|
help = "The secret token to authenticate the client.",
|
||
|
env = envhead!("server_secret_token"),
|
||
|
)]
|
||
|
pub secret_token: Option<String>,
|
||
|
}
|
||
|
```
|
||
|
|
||
|
# Changelog
|
||
|
|
||
|
### Version 1.0.0
|
||
|
- Initial release
|