Open4
dotenv やめるってよ
背景
- API 接続時のキーなどを機密情報として
.env
ファイルに保存したい - しかし dotenv クレートは長らくメンテされていない
- 後継となるツールの開発もちらほら見られるが、似たりよったりの状況
サンプルアプリケーション
-
clap
をプロジェクトの依存に追加して、env
フィーチャーを指定する -
derive
でやるか、builder
でやるかはお好みで
依存関係
[dependencies]
clap = { version = "4.5", features = ["derive", "env"] }
- 非常に単純に
secret_value
を取り出してプリントするだけ
main.rs
use clap::Parser as _;
#[derive(clap::Parser)]
pub struct EnvArgs {
#[arg(long, env)]
pub secret_value: String,
}
fn main() {
let env_args = EnvArgs::parse();
println!("My Secret value={}", env_args.secret_value);
}
- ひみつのファイル
.env ファイル
SECRET_VALUE=Zv4jIAw0iigike4I
実行する
- コマンドライン引数を指定して実行する
$ cargo run -- --secret-value='My Secret'
My Secret value=My Secret
-
justfile
を使って.env
を環境変数として使う -
set dotenv-load
と書くと.env
ファイルを環境変数としてロードしてくれるので、justfile
の中では環境変数のようにSECRET_VALUE
が見える
justfile
set dotenv-load
run:
cargo run
env:
@echo $SECRET_VALUE
- just env で環境変数として見えることを確認する
$ just env
Zv4jIAw0iigike4I
- just run でプログラムを実行する
$ just run
My Secret value=Zv4jIAw0iigike4I