Open8
dotenv-validator を CLI 化した dryenv (仮) というツールを作ってみる
これを CLI 化して、ファイル出力機能などを追加したい
ほしいもの
- MUST: アプリケーション起動前に必要な環境変数が揃っていることが確認できる
- MUST: 現在の環境変数を読み取り、
.env
形式で標準出力/ファイルに出力できる - MAY: ローカル環境やCI/CD環境でも動いてほしい
- MAY: 型のチェックができると良い
- MAY: Markdown 形式でドキュメントを出力できる
名前は仮
依存関係の管理のためモジュールの初期化が必要
$ go mod init github.com/snaka/dryenv
go: creating new go.mod: module github.com/snaka/dryenv
モジュール取得
$ go get github.com/duffn/dotenv-validator
go: downloading github.com/duffn/dotenv-validator v0.1.0
go: added github.com/duffn/dotenv-validator v0.1.0
main.go
を書く
main.go
package main
import (
"fmt"
validator "github.com/duffn/dotenv-validator"
)
func main() {
err := validator.Validate()
fmt.Println(err)
}
.env.example
を用意する
VAR1=bob # required
VAR2=lobloaw # required,format=str
VAR3=1.3415 # format=float
VAR4=ABCDEF # format=[A-Z]+
VAR5=notrequired
実行してみる
$ go run main.go
these variables are missing in the envionment (VAR1,VAR2)
these variables have invalid formats (VAR3,VAR4)
- 環境変数が未設定であったらエラーメッセージを出す
- 値が期待したフォーマットと異なるとエラーを出す
が実現できているが、終了コードは「正常」のままなので、そこの修正は必要。
とりあえず使えるレベルにする
以下に対応できれば最低限使えるレベルに達する
- バリデーションに適合しない場合に終了コードを 0 以外にする
- 読み込むファイルをオプションで指定できる
- 先頭が
#
の行は無視する -
.env
形式で出力する