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であれば別の方法もありそうです。