Saya mengalami masalah saat menarik dari file konfigurasi YAML:
Kesalahan fatal: saat mengurai pemetaan blok; diharapkan <blok akhir>, tetapi menemukan entri blok
Meskipun ada banyak validator YAML online, yang telah saya coba dan bantu, saya ingin memvalidasi file YAML saya dari baris perintah dan mengintegrasikannya ke dalam pipeline integrasi berkelanjutan saya.
Bagaimana cara memvalidasi sintaks file YAML pada baris perintah?
travis lint .travis.yml
python -c "from yaml import load, Loader; load(open('.travis.yml'), Loader=Loader)"
Jawaban:
Dengan instalasi Ruby dasar, ini seharusnya berfungsi:
ruby -ryaml -e "p YAML.load(STDIN.read)" < data.yaml
Versi Python (thx @Murphy):
pip install pyyaml python -c 'import yaml, sys; print(yaml.safe_load(sys.stdin))' < data.yaml
sumber
puts y
akhir ini maka Anda mendapatkan perilaku UNIX yang lebih standar: jika file tersebut valid maka tidak ada yang akan dicetak, dan jika tidak valid maka Anda akan melihat pengecualian dan pelacakan tumpukan.puts y
Anda juga bisa menyingkirkany=
.puts
sama sekali. Kode0
pengembalian hanya jika valid, selain itu bukan nol dan Anda akan mendapatkan pelacakan tumpukan pengecualian. Mengurangi noise pada output CLI bahkan jika Anda melihatnya.ruby -e "require 'yaml';puts YAML.load_file(ARGV[0])"
Anda dapat meneruskan nama file setelahnya, daripada harus mengedit cuplikan secara langsung.Mengingat bahwa Anda memiliki instalasi perl di server yang Anda kerjakan, dan memiliki beberapa alat YAML dasar, Anda dapat menggunakan ...
perl -MYAML -e 'use YAML;YAML::LoadFile("./file.yaml")'
Perlu dicatat bahwa ini akan ketat dalam interpretasi file itu, tetapi berguna.
sumber
Can't locate object method "install" via package "YAML" at -e line 1.
perl -MCPAN -e 'shell'
dan kemudian di baris perintah lakukaninstall YAML
Anda bisa menggunakan yamllint . Ini tersedia di Homebrew, dll. Dapat digunakan untuk validasi sintaks serta untuk linting.
sumber
Untuk memperbaiki
.yaml
file Anda, saya merekomendasikan alat yamllint. Ini dapat diluncurkan dengan mudah dari konsol lokal.Paket
yamllint
ini tersedia untuk semua sistem operasi utama.Ini dapat diinstal dari sumber paket sistem. (misalnya
sudo apt-get install yamllint
). Lihat dokumentasi untuk mulai cepat dan instalasi.sumber
Jika Anda tidak memasang interpreter di lingkungan Anda tetapi masih mendapatkan curl , Anda dapat menggunakan proyek linter online seperti Lint-Trilogy :
curl -X POST --data "data=$(cat myfile.yml)" https://www.lint-trilogy.com/lint/yaml/json
Ini memberikan hasil validasi termasuk. deskripsi kesalahan (jika ada) sebagai json atau csv atau, jika memadai, sebagai teks biasa benar atau salah .
Ini tersedia sebagai file buruh pelabuhan juga. Jadi, jika Anda sering membutuhkan linter berbasis REST, mungkin dalam pipeline CI / CD, mungkin berguna untuk menghosting instance sendiri di situs Anda.
sumber
Atau secara bergantian instal (gratis) Eclipse IDE dan kemudian YEdit yaml editor dan lihat yaml Anda dengan penyorotan sintaks, tanda kesalahan, dan tampilan garis besar. Biaya pengaturan satu kali bekerja cukup baik untuk saya.
sumber