mattintosh note

どこかのエンジニアモドキの備忘録

2024-06-05: 現在ホビー関連の記事を hobby.mattintosh-note.jp に移行しています(一部の国、ISP からは閲覧できません)

PHPでYAMLファイルのシンタックスチェックをする

PHP アプリケーションが使用している YAML ファイルに何らかの誤りがあってアプリケーションが正しく動いていない気がするのでシンタックスチェックを行うことにした。YAML のチェックに yq 入れるのもなぁ…ということで PECLYAML ライブラリを使うことにした。

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 に捨てればエラーのあったファイル名だけが出てくる。

もうちょっとちゃんとしたアプリケーションっぽく書けるんだろうけどやりたいことは出来たので今日はこの辺で。