#env-var #clap #shell #cli #os

envhead

一个通过静态前缀构建环境变量名称的crate。与流行的clap crate配合使用效果极佳。

1 个稳定版本

1.0.0 2023年11月10日

#733过程宏

MIT 许可证

5KB

Envhead

Envhead 是一个crate,用于使用静态前缀创建环境变量名称。

设置

首先,您应该通过设置环境变量 ENV_HEAD_PREFIX 为期望的值来定义前缀。当未定义 ENV_HEAD_PREFIX 变量时,使用 ENV 作为默认前缀。在以下示例中,我们将使用 MY_APP 作为前缀。

如果您在macOS或Linux上工作,您可能会使用Bash如下所示

ENV_HEAD_PREFIX=MY_APP cargo build

使用来自JetBrains的IDE,如 RustRover,您可以在 运行配置 中设置环境变量,并在您的 集成终端 中。

如果您使用CI/CD流水线?您可以在流水线配置中设置环境变量。您在Docker容器中构建应用程序吗?您也可以在Dockerfile中设置环境变量。

请注意:此设置过程仅适用于开发环境。您的编译程序不会依赖于 ENV_HEAD_PREFIX 环境变量。

使用方法

现在,在您的代码中,您可以使用 envhead! 宏来创建环境变量名称。

use envhead::envhead;

fn main() {
    let env_var = envhead!("server_port");

    // Prints "MY_APP_SERVER_PORT":
    println!("{}", env_var);
}

您可能会发现将 envheadclap 一起使用来创建命令行参数的环境变量名称很有用。

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>,
}

变更日志

版本 1.0.0

  • 首次发布

依赖项

~315–780KB
~19K SLoC