Laravelのartisanのzsh補完書いた

サブコマンドの補完はあったんだけど、ちゃんとオプションの補完までしてくれるのがないので自分で書いてみた。zshわからんしcompsysわからんし、そもそもシェルスクリプトさっぱりなので大変苦労したが、まあ使えるものになってきたので公開。

サブコマンド、オプションはもちろん、一部のオプションの値補完できたり、helpの場合には再度サブコマンド補完に出したりと割と頑張ってる。

GitHub - magai/artisan-completion: laravel artisan completion for zsh

使い方

jq使ってるのでそれだけ用意して。opensslも使ってるんだけど多分入ってると思う。で、普通ならzshの補完はオートロードできるんだけど、artisanはphp artisan ...という形で実行されるという特殊な仕様のためできなかった。

なんというか、このartisanの補完はphpコマンドの補完として実装されていて、php artisanと続いたとき以外は元のphpコマンドの補完に投げるというややこしい実装になっている。これもまた苦労した……。

source artisan-completion.zsh
compdef -d php
compdef _artisan php
zstyle ':completion::*:php:*' use-cache true

compinitした上で、上のように書けばおけ。zplug使ってる人はzplugで入れてもいいかと。

重いartisanコマンドを叩きまくってるので、キャッシュはほぼ必須。