コマンドラインで引数を処理する順番は以前調べたことがあるのだけど、これをいい感じに処理してくれるGoのライブラリが欲しい気がする。
まず設定ファイルを読み、環境変数が設定されていれば上書き、コマンドラインで指定されていればさらに上書き
- joho/godotenv: A Go port of Ruby’s dotenv library (Loads environment variables from
.env
.) - Netflix/go-env: a golang library to manage environment variables
- caarlos0/env: A simple and zero-dependencies library to parse environment variables into structs.
- ilyakaznacheev/cleanenv: ✨Clean and minimalistic environment configuration reader for Golang
- cristalhq/aconfig: Simple, useful and opinionated config loader.
- kkyr/fig: A minimalist Go configuration library
ざっと検索してこんな感じでいろいろありそうだけど、環境変数を扱うものが多い気がする。
基本的には構造体を定義して、タグで環境変数名や引数名と紐づけていくのが主流っぽい。