Pulumiで複数stackがあると現在のstackはどれが選択されているか忘れることがある。
こういう場合はpromptに出てると便利なので設定してみた。
現状pulumiコマンドで高速に現在のstackを取得する方法はないが、cliでは保持しているので、どこかに設定を持っているはず。
調べてみると、 ~/.pulumi/workspaces/[YOUR_PROJECT_NAME]-[HASH]-workspace.json
に以下のような設定があった。
*-workspace.json
{
"stack": "[YOUR_STACK_NAME]"
}
こいつを取得すればよさそう。
問題はファイル名がハッシュになっていることだが、ソースを読むとPulumi.yamlのあるパスをsha1にしたもののようだ。
pulumiのソース
// https://github.com/pulumi/pulumi/blob/ad78f3ef59f846b6e23d3726e76bb2de0cee9a4d/pkg/workspace/workspace.go#L173
// pw.projectはディレクトリ
uniqueFileName := string(pw.name) + "-" + sha1HexString(pw.project) + "-" + WorkspaceFile
なのでopensshかなんかでPulumi.ymlのあるディレクトリのフルパスを変換するとハッシュになる。
シェル
# 現在のディレクトリにあるPulumi.yamlからcurrent stackを取得
# macosで動作確認
cat ~/.pulumi/workspaces/$(cat Pulumi.yaml | grep name: | sed -e 's/name: //g')-$(echo -n "$(pwd)/Pulumi.yaml" | openssl sha1)-workspace.json | grep stack | sed -e 's/.*"stack": "\(.*\)".*/\1/' | sed -e 's/^.*\///'
これをシェルのPS1に設定すると現在のstackがpromptに出せる