Jak sprawdzić poprawność mojego pliku YAML z wiersza poleceń?

88

Mam problemy z pobieraniem z pliku konfiguracyjnego YAML:

Błąd krytyczny: podczas analizowania mapowania bloku; oczekiwano <koniec bloku>, ale znaleziono wpis do bloku

Chociaż istnieje wiele walidatorów YAML online, które wypróbowałem i pomogłem, chciałbym zweryfikować moje pliki YAML z wiersza poleceń i zintegrować to z moim potokiem ciągłej integracji.

Jak mogę sprawdzić poprawność składni pliku YAML w wierszu poleceń?

pokaz slajdówp2
źródło
5
Spróbuj:travis lint .travis.yml
kenorb
4
python -c "from yaml import load, Loader; load(open('.travis.yml'), Loader=Loader)"
Natim
20
To pytanie nie powinno być zamknięte. Być może przeformułuj to na „Jak mogę sprawdzić poprawność mojego pliku YAML z wiersza poleceń”. To ważne i przydatne pytanie
Hanxue,
4
Seconded @hanxue - pojawia się jako pierwszy wynik podczas wyszukiwania tematu i powinien być przydatnym źródłem informacji, gdy Google wyląduje tutaj.
brice
4
Tak, to pytanie nie powinno być zamknięte. Nie sądzę, aby odpowiedzi były uparte lub spamerskie.
Joey Novak

Odpowiedzi:

144

Z podstawową instalacją Rubiego powinno to działać:

ruby -ryaml -e "p YAML.load(STDIN.read)" < data.yaml

Wersja Pythona (thx @Murphy):

pip install pyyaml
python -c 'import yaml, sys; print(yaml.safe_load(sys.stdin))' < data.yaml
Tombart
źródło
2
Jeśli usuniesz puts yznak na końcu tego, otrzymasz bardziej standardowe zachowanie UNIX: jeśli plik jest prawidłowy, nic nie zostanie wydrukowane, a jeśli jest nieprawidłowy, zobaczysz wyjątek i ślad stosu.
bdesham
… A jeśli usuniesz puts y, możesz również pozbyć się y=.
bdesham
Dzięki, to zdecydowanie lepsze i krótsze.
Tombart
1
A jeśli naprawdę używasz tego tylko jako części potoku testowego ci, nie ma takiej potrzeby puts. Kod powrotu jest po prostu 0prawidłowy, w przeciwnym razie niezerowy, a otrzymasz ślad stosu wyjątków. Zmniejsza hałas na wyjściu CLI, jeśli nawet na to patrzysz.
Jeff Puckett,
1
Jeśli użyjesz następującego: ruby -e "require 'yaml';puts YAML.load_file(ARGV[0])"możesz następnie przekazać nazwę pliku po, zamiast bezpośrednio edytować fragment.
pnomolos
22

Biorąc pod uwagę, że masz instalację perla na serwerze, na którym pracujesz, i ma ona niektóre z podstawowych narzędzi YAML, możesz użyć ...

perl -MYAML -e 'use YAML;YAML::LoadFile("./file.yaml")'

Należy zauważyć, że będzie to ścisłe w interpretacji pliku, ale przydatne.

CS Marshall
źródło
3
Nie można zlokalizować YAML.pm
Natim
4
/ usr / bin / perl -MCPAN -e 'install YAML'
Ben Mathews
prawdopodobnie problem z instalacją CPAN, ale:Can't locate object method "install" via package "YAML" at -e line 1.
Cheruvim
Jeśli powyższe nie działa, zawsze możesz spróbować: perl -MCPAN -e 'shell'a następnie w wierszu poleceń zróbinstall YAML
Cheruvim
8

Możesz użyć yamllint . Jest dostępny w Homebrew itp. Może być używany do sprawdzania poprawności składni, a także do lintingu.

James Hiew
źródło
5

Aby poprawić swoje .yamlpliki, polecam narzędzie yamllint. Można go łatwo uruchomić z konsoli lokalnej.

Pakiet yamllintjest dostępny dla wszystkich głównych systemów operacyjnych.

Można go zainstalować ze źródeł pakietów systemu. (np sudo apt-get install yamllint.). Zobacz dokumentację dotyczącą szybkiego uruchamiania i instalacji.

kinafu
źródło
-9

Lub alternatywnie zainstalowany (darmowy) Eclipse IDE, a następnie edytor yaml YEdit i zobacz swój yaml z podświetlaniem składni, flagami błędów i widokami konspektu. Jednorazowy koszt instalacji działa całkiem nieźle.

Ernie
źródło
2
OP specjalnie poprosił o rozwiązania CLI.
crantok