# Envhead Envhead is a crate that creates environment variable names using a static prefix. ## Setup First, you should define the prefix by setting the `ENV_HEAD_PREFIX` environment variable to the desired value. When the `ENV_HEAD_PREFIX` variable is not defined, `ENV` is used as the default prefix. In the following examples, we will use `MY_APP` as the prefix. In case you are working with macOS or Linux, you might use Bash like this: ```bash ENV_HEAD_PREFIX=MY_APP cargo build ``` Using an IDE from JetBrains like [RustRover](https://www.jetbrains.com/rust/), you can set the environment variable in the [run configuration](https://www.jetbrains.com/help/rust/cargo-run-debug-configuration.html) and for your [integrated terminal](https://www.jetbrains.com/help/clion/settings-tools-terminal.html). Do you use a CI/CD pipeline? You can set the environment variable in your pipeline configuration. Do you build your application in a Docker container? You can set the environment variable in your Dockerfile as well. **Please notice:** This setup procedure is required just for the development environment. Your compiled program(s) will not depend on the `ENV_HEAD_PREFIX` environment variable. ## Usage Now, 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, } ``` # Changelog ### Version 1.0.0 - Initial release