Laravelプロジェクト下どこからでもArtisan実行
BashでArtisanコマンドの補完を実現する、ArtisanBashCompletionを改良して、ArtisanコマンドをLaravelプロジェクト下のどのフォルダーにいても実行と補完ができるようにしました。
この補完を使用しない方でも、ArtisanコマンドをLaravelプロジェクトのどこからでも実行できるようにするのは、簡単です。今回はBashを使用している方のコードですが、他のシェルでも似たような方法で実現できます。(zshでも動作するようです。)
.bashrc
か.bash_profile
ファイルに以下のコードを追加してください。(zshの場合は.zshrcなどに置き換えて読んでください。)
alias artisan='php "$(_get_artisan_dir)/artisan" --ansi' _get_artisan_dir() { wd=$(pwd) until [ -f "${wd}/artisan" ] do wd=${wd%/*} if [ -z $wd ] then break fi done echo $wd }
これでartisan
というエイリアスがLaravelプロジェクト下のどのフォルダーからでも実行できます。
もちろん、BashArtisanCompletionを利用している方は、新しいバージョンに入れ替えていただけば、補完と実行ができます。
追記:Tips
Artisan用に組んでありましたが、汎用的に変更することも可能です。
_command_search_dirs() { wd=$(pwd) until [ -f "${wd}/$1" ] do wd=${wd%/*} if [ -z $wd ] then break fi done echo $wd }
とすれば、引数に探したいファイルが指定できるようになります。エイリアスでこれを利用するなら:
alias artisan='php "$(_get_artisan_dir artisan)/artisan" --ansi'
ですかね。試していませんけれど。
PHPでコマンドラインからファイルを実行する場合、このような形式になるので、汎用的に使えるでしょう。
まあ、zshであれば別の方法もありそうです。