1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pulumiのstackをpromptに表示する

Last updated at Posted at 2019-02-25

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に出せる :smiley:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?