dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

Salesforce DXのコマンドをzshで補完する

メモ。
Salesforce DX の CLI はコマンドが長いのでシェルで補完してくれる関数ないかなーと思っていたら公式ではないけどあった。

Salesforce DX aliases and shell completions for working with sfdx in zsh and vim · GitHub

これの sfdx_completion.zsh というファイルがそう。

(2018/9/13追記)

中の人が公開しているものもあった。

オプションの補完など、こちらの方が優秀そう。
インストール方法は README の通り。

(追記ここまで)


インストール手順

普通の zsh 補完関数と同じように設定すれば OK だが、やり方を知らなかったので備忘録として。
ここを読むといい。
https://github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org

まず、補完関数を格納するディレクトリを作成し、 fpath という変数に追加する。( .zshrc に記載する)

$ mkdir -p ~/.zsh/completion
# ~/.zshrc
fpath=(~/.zsh/completion $fpath)

続いて、補完関数を用意する。
補間関数ファイルは、

  • 1 行目に補完対象となるコマンドを #compdef sfdx という形式で記載する
  • ファイル名は _sfdx のように、 _[補完対象のコマンド] にする

というルールがあるらしいが、今回は gist の sfdx_completion.zsh の内容をコピーし、_sfdx というファイル名でディレクトリに格納すればいい。

保存したら

$ source ~/.zshrc

で補完が効くようになる。


結果

f:id:dackdive:20171029134330g:plain

まだ本格的に試してないけどよさげ。


懸念

Salesforce が公式で提供しているものでもないし(Author も中の人ではなさそう)、どうやってこの補間関数を生成したのかわからないので
今後の CLI のバージョンアップに追従してくれるかどうかは謎。