WardenはMagentoやSymfony系の開発をする際、必要になるコンテナ一式や開発用の証明書などをセットで用意してくれる便利なツールです。
もちろんXdebugを使ってリモートデバッグもできるわけですが、CLI機能のデバッグは標準では用意されていません。
Gistで書いてくれてる人がいる
軽く調べてみると、Gistがヒットしました。
そのものズバリなものがあります(アリガタヤ)。
というわけでこの例に沿ってやってみましょう。
clixdebug.cmd を所定のパスに作成する
手順に沿って、
/usr/local/Cellar/warden/[x.x.x]/commands/clixdebug.cmd
にファイルを作成し、Gistに書かれているスクリプトを貼り付けます。
バージョン番号は使っているWardenのバージョン番号に読み替えましょう。
基本、WardenはMac用なので、WindowsやLinuxで使っている人も自分の環境に合わせて適当に読み替えてください。
動かしてみる
ファイルの作成ができたら、
warden clixdebug 実行ファイル名 [パラメータ]
を試します。
今回試したのはMagentoコマンドなので、
warden clixdebug bin/magento mycmd:exec
というようになります。もちろん他のサブコマンドでも可ですね。
なお、動作検証する際はIDE側でブレークポイントを張っておきましょう。
私の場合は既にブラウザでのデバッグ用にPHPStormで設定ができているので、単にブレークポイントを設定するだけでした。
おや?動かない・・・
clixdebugを動かしてみると、ターミナル上に
This script is not intended to be run directly!
というメッセージが出ます。
調べてみたところ、私が使っているWarden-0.9.1では、clixdeug.cmdの内容は、
[[ ! ${WARDEN_COMMAND} ]] && >&2 echo -e "\033[31mThis script is not intended to be run directly!" && exit 1
ではなく
[[ ! ${WARDEN_DIR} ]] && >&2 echo -e "\033[31mThis script is not intended to be run directly!" && exit 1
と書かないといけないようです。
よくあるアップデートに伴う仕様変更か、あるいは元ファイルの作者のミスかもしれません。
いずれにしても、スクリプトを修正することで無事動作するようになりました。
これでCLIツール実装時のデバッグもはかどりますね。