명령 줄에서 내 YAML 파일의 유효성을 검사하려면 어떻게해야합니까?


88

YAML 구성 파일에서 가져 오는 데 문제가 있습니다.

치명적인 오류 : 블록 매핑을 구문 분석하는 동안; 예상되는 <블록 끝>이지만 블록 항목을 찾았습니다.

내가 시도하고 도움을 준 온라인 YAML 유효성 검사기가 많이 있지만 명령 줄에서 내 YAML 파일의 유효성을 검사하고이를 지속적인 통합 파이프 라인에 통합하고 싶습니다.

명령 줄에서 YAML 파일의 구문을 검증하려면 어떻게해야합니까?


5
시도 :travis lint .travis.yml
kenorb

4
python -c "from yaml import load, Loader; load(open('.travis.yml'), Loader=Loader)"
Natim 2016-08-04

20
이 질문은 닫히면 안됩니다. "명령 줄에서 내 YAML 파일의 유효성을 검사하는 방법"으로 다시 표현할 수 있습니다. 이 유효하고 유용한 질문
Hanxue

4
Seconded @hanxue-주제를 검색 할 때 첫 번째 결과로 표시되며 Google이 여기에 도착할 때 유용한 참고 자료가되어야합니다.
브라이스

4
예,이 질문은 닫히면 안됩니다. 나는 답변이 독단적이거나 스팸이라고 생각하지 않습니다.
Joey Novak

답변:


144

기본 Ruby 설치를 사용하면 다음과 같이 작동합니다.

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

Python 버전 (@Murphy) :

pip install pyyaml
python -c 'import yaml, sys; print(yaml.safe_load(sys.stdin))' < data.yaml

2
puts y이 끝에서 를 제거하면 보다 표준적인 UNIX 동작이 나타납니다. 파일이 유효하면 아무것도 인쇄되지 않고 유효하지 않으면 예외 및 스택 추적이 표시됩니다.
bdesham

… 그리고를 제거 puts y하면 y=.
bdesham

감사합니다. 확실히 더 좋고 짧습니다.
Tombart

1
실제로 이것을 CI 테스트 파이프 라인의 일부로 사용하는 경우에는 그럴 필요가 없습니다 puts. 리턴 코드는 0유효 하면 간단 하고, 그렇지 않으면 0이 아니므로 예외 스택 추적을 받게됩니다. CLI 출력을보고있는 경우에도 노이즈를 줄입니다.
Jeff Puckett

1
다음을 사용하는 경우 : ruby -e "require 'yaml';puts YAML.load_file(ARGV[0])"스 니펫을 직접 편집 할 필요없이 뒤에 파일 이름을 전달할 수 있습니다.
pnomolos

22

작업중인 서버에 펄이 설치되어 있고 기본 YAML 도구 중 일부가 있으므로 다음을 사용할 수 있습니다.

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

이것은 파일의 해석이 엄격하지만 유용하다는 점에 유의해야합니다.


3
YAML.pm을 찾을 수 없음
Natim

4
는 / usr / 빈 / 펄 -MCPAN -e 'YAML 설치'
벤 매튜스

CPAN 설치에 문제가있을 수 있지만 :Can't locate object method "install" via package "YAML" at -e line 1.
Cheruvim

위의 방법이 작동하지 않으면 언제든지 시도 할 수 있습니다. perl -MCPAN -e 'shell'다음 명령 줄에서 수행하십시오install YAML
Cheruvim

8

yamllint 사용할 수 있습니다 . Homebrew 등에서 사용할 수 있습니다. Linting뿐만 아니라 구문 유효성 검사에도 사용할 수 있습니다.


5

.yaml파일 을 수정하려면 yamllint 도구를 사용하는 것이 좋습니다. 로컬 콘솔에서 쉽게 시작할 수 있습니다.

이 패키지 yamllint는 모든 주요 운영 체제에서 사용할 수 있습니다.

시스템의 패키지 소스에서 설치할 수 있습니다. (예 :) sudo apt-get install yamllint. 빠른 시작 및 설치는 설명서를 참조하십시오.


-9

또는 (무료) Eclipse IDE와 YEdit yaml 편집기를 번갈아 설치하고 구문 강조 표시, 오류 플래그 및 개요보기로 yaml을 확인합니다. 일회성 설정 비용은 저에게 꽤 효과적입니다.


2
OP는 특별히 CLI 솔루션을 요청했습니다.
crantok
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.