PHP アプリケーションが使用している YAML ファイルに何らかの誤りがあってアプリケーションが正しく動いていない気がするのでシンタックスチェックを行うことにした。YAML のチェックに yq
入れるのもなぁ…ということで PECL の YAML ライブラリを使うことにした。
YAML ライブラリには yaml_parse()
と yaml_parse_file()
があるが今回は yaml_parse_file()
でコマンドラインからファイルを引数として渡すようにする。
_IFS=$IFS IFS=$'\n' set -- $(find /var/www/html -iregex ".*\.ya?ml") IFS=$_IFS php -r 'foreach ($argv as $arg) { if(!file_exists($arg)) continue; $data = yaml_parse_file($arg); if ($data === false) echo $arg . PHP_EOL; }' "$@"
そのままだとパースに失敗したエラーメッセージとファイル名が出てくる。PHP の標準エラー出力を /dev/null
に捨てればエラーのあったファイル名だけが出てくる。
もうちょっとちゃんとしたアプリケーションっぽく書けるんだろうけどやりたいことは出来たので今日はこの辺で。