TL;DR
YAMLの文法チェッカを作成した。これでYAMLファイルの内容のバリデーションができる。
引数でもパイプでも渡せるぞ!
紹介
YAMLファイルをコミットする前に最低限の文法チェックぐらいは済ませておきたい、というのは人情だと思う。
「Ruby のワンライナーで YAML の文法チェック」という記事にいつもお世話になっていたが、ファイルの引数渡しでもパイプライン経由でもチェックできるよう、シェルスクリプトで工夫したものを作った。
肝となる引数とパイプ両方に対応、というのはコードにあるように if
で判断してパイプで流しております。
次のシェルスクリプトを適当なファイル名で保存して使ってください。(僕は ymlck.sh という名前にして 0755 にして ~/bin/ に置いております)
ymlck.sh
#!/bin/sh
if [ -p /dev/stdin ]; then
cat -
else
cat $@
fi | ruby -r yaml -e 'YAML.load STDIN; puts "OK"'
使い方
# パイプ
$ cat somefile.yaml | ymlck.sh
# 引数渡し
$ ymlck.sh somefile.yaml
問題ないファイルであれば何も出ません。
問題のあるYAMLファイルの場合、エラーメッセージが出ます。
もう少し工夫したやつ
出力結果をJSONとして表示させるようなオプション付きのものを、こちらで公開しています。