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ń?


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

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.


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.



-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.


2
OP specjalnie poprosił o rozwiązania CLI.
crantok
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.