Ich habe Probleme beim Abrufen aus einer YAML-Konfigurationsdatei:
Schwerwiegender Fehler: beim Parsen einer Blockzuordnung; erwartet <Blockende>, aber Blockeintrag gefunden
Obwohl es viele Online-YAML-Validatoren gibt, die ich ausprobiert und geholfen habe, möchte ich meine YAML-Dateien über die Befehlszeile validieren und in meine Pipeline für die kontinuierliche Integration integrieren.
Wie kann ich die Syntax einer YAML-Datei in der Befehlszeile überprüfen?
travis lint .travis.yml
python -c "from yaml import load, Loader; load(open('.travis.yml'), Loader=Loader)"
Antworten:
Bei der grundlegenden Ruby-Installation sollte dies funktionieren:
ruby -ryaml -e "p YAML.load(STDIN.read)" < data.yaml
Python-Version (thx @Murphy):
pip install pyyaml python -c 'import yaml, sys; print(yaml.safe_load(sys.stdin))' < data.yaml
quelle
puts y
am Ende entfernen, erhalten Sie ein standardmäßigeres UNIX-Verhalten: Wenn die Datei gültig ist, wird nichts gedruckt, und wenn sie ungültig ist, werden eine Ausnahme und eine Stapelverfolgung angezeigt.puts y
, können Sie das auch loswerdeny=
.puts
. Der Rückkehrcode ist einfach,0
wenn er gültig ist, andernfalls ungleich Null, und Sie erhalten eine Ausnahme-Stapelverfolgung. Reduziert das Rauschen am CLI-Ausgang, wenn Sie es überhaupt betrachten.ruby -e "require 'yaml';puts YAML.load_file(ARGV[0])"
Sie können den Dateinamen nachher übergeben, anstatt das Snippet direkt bearbeiten zu müssen.Wenn Sie eine Perl-Installation auf dem Server haben, auf dem Sie arbeiten, und einige der grundlegenden YAML-Tools enthält, können Sie ...
perl -MYAML -e 'use YAML;YAML::LoadFile("./file.yaml")'
Es sollte beachtet werden, dass dies bei der Interpretation der Datei streng, aber nützlich ist.
quelle
Can't locate object method "install" via package "YAML" at -e line 1.
perl -MCPAN -e 'shell'
und dann an der Befehlszeileinstall YAML
Sie könnten Yamllint verwenden . Es ist in Homebrew usw. verfügbar. Es kann sowohl zur Syntaxvalidierung als auch zum Flusen verwendet werden.
quelle
Um Ihre
.yaml
Dateien zu korrigieren, empfehle ich das Tool yamllint. Es kann einfach über die lokale Konsole gestartet werden.Das Paket
yamllint
ist für alle gängigen Betriebssysteme verfügbar.Es kann aus den Paketquellen des Systems installiert werden. (zB
sudo apt-get install yamllint
). Informationen zum Schnellstart und zur Installation finden Sie in der Dokumentation.quelle
Wenn Sie keinen Interpreter in Ihrer Umgebung installiert haben, aber dennoch eine Locke haben , können Sie ein Online-Linter-Projekt wie Lint-Trilogy verwenden :
curl -X POST --data "data=$(cat myfile.yml)" https://www.lint-trilogy.com/lint/yaml/json
Es liefert das Validierungsergebnis inkl. Fehlerbeschreibungen (falls vorhanden) als json oder csv oder, falls ausreichend, als Klartext wahr oder falsch .
Es ist auch als Docker-Datei verfügbar. Wenn Sie also häufig einen REST-basierten Linter benötigen, möglicherweise in einer CI / CD-Pipeline, kann es hilfreich sein, eine eigene Instanz auf Ihrer Site zu hosten.
quelle
Oder installieren Sie abwechselnd (kostenlos) Eclipse IDE und dann YEdit yaml editor und sehen Sie Ihr yaml mit Syntaxhervorhebung, Fehlerflags und Gliederungsansichten. Einmalige Einrichtungskosten funktionieren für mich ziemlich gut.
quelle