मैं कमांड लाइन से अपनी YAML फ़ाइल कैसे मान्य करूँ?


91

मैं एक YAML विन्यास फ़ाइल से खींचने वाले मुद्दे कर रहा हूँ:

घातक त्रुटि: ब्लॉक मैपिंग पार्स करते समय; अपेक्षित <ब्लॉक एंड>, लेकिन पाया गया ब्लॉक एंट्री

हालांकि ऑनलाइन यमल एल वैध के बहुत सारे हैं, जो मैंने कोशिश की है और मदद की है, मैं अपनी मिमेकल फाइलों को कमांड लाइन से मान्य करना चाहता हूं और इसे मेरी निरंतर एकीकरण पाइपलाइन में एकीकृत करना चाहता हूं।

मैं कमांड लाइन पर एक YAML फ़ाइल के सिंटैक्स को कैसे मान्य कर सकता हूं?


5
कोशिश करें:travis lint .travis.yml
kenorb

4
python -c "from yaml import load, Loader; load(open('.travis.yml'), Loader=Loader)"
नतिम

21
यह सवाल बंद नहीं होना चाहिए। शायद इसे फिर से शब्द दें "मैं कमांड लाइन से अपनी YAML फ़ाइल को कैसे सत्यापित करूं"। यह एक वैध और उपयोगी प्रश्न है
हैनक्स्यू जुएल

5
Seconded @hanxue - विषय की खोज करते समय यह पहली परिणाम के रूप में सामने आता है और जब Google हमें यहां लैंड करता है तो एक उपयोगी संदर्भ होना चाहिए।
ब्राईस

5
हाँ, यह सवाल बंद नहीं होना चाहिए। मुझे नहीं लगता कि उत्तर स्पष्ट या स्पैम हैं।
जॉय नोवाक

जवाबों:


147

बुनियादी रूबी स्थापना के साथ यह काम करना चाहिए:

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

पायथन संस्करण (thx @ मर्फी):

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

2
यदि आप puts yइसके अंत से हटाते हैं तो आपको एक अधिक मानक UNIX व्यवहार मिलता है: यदि फ़ाइल वैध है तो कुछ भी प्रिंट नहीं किया जाएगा, और यदि यह अमान्य है तो आपको एक अपवाद और स्टैक ट्रेस दिखाई देगा।
बिधम

… और यदि आप हटाते हैं तो आप puts yछुटकारा भी पा सकते हैं y=
bdesham

धन्यवाद, यह निश्चित रूप से बेहतर और छोटा है।
टॉमबार्ट

1
और यदि आप वास्तव में इसे ci परीक्षण पाइपलाइन के हिस्से के रूप में उपयोग कर रहे हैं, तो इसकी कोई आवश्यकता नहीं है puts। रिटर्न कोड बस 0वैध है, तो गैर-शून्य और आपको एक अपवाद स्टैक ट्रेस मिलेगा। यदि आप इसे देख रहे हैं, तो भी CLI आउटपुट पर शोर कम कर देता है।
जेफ पकेट

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 / bin / perl -MCPAN -e 'Install YAML'
बेन मैथ्यूज

शायद CPAN स्थापना के साथ एक समस्या है लेकिन:Can't locate object method "install" via package "YAML" at -e line 1.
चेरुविम

अगर ऊपर काम नहीं करता है तो आप हमेशा कोशिश कर सकते हैं: perl -MCPAN -e 'shell'और फिर कमांड लाइन पर करेंinstall YAML
चेरुविम

9

आप याम्लिंट का उपयोग कर सकते हैं । यह Homebrew में उपलब्ध है, आदि यह सिंटैक्स सत्यापन के लिए और साथ ही लाइनिंग के लिए भी इस्तेमाल किया जा सकता है।


6

आपकी .yamlफ़ाइलों को ठीक करने के लिए मैं उपकरण यामिंट को सलाह देता हूं। इसे स्थानीय कंसोल से आसानी से लॉन्च किया जा सकता है।

पैकेज yamllintसभी प्रमुख ऑपरेटिंग सिस्टम के लिए उपलब्ध है।

यह सिस्टम के पैकेज स्रोतों से इंस्टॉल करने योग्य है। (जैसे sudo apt-get install yamllint)। त्वरित शुरुआत और स्थापना के लिए प्रलेखन देखें।


1

यदि आपको अपने वातावरण में कोई दुभाषिया स्थापित नहीं मिला है , लेकिन फिर भी एक कर्ल मिला है , तो आप लिंट-ट्रिलॉजी जैसे ऑनलाइन लिंटर प्रोजेक्ट का उपयोग कर सकते हैं :

curl -X POST  --data "data=$(cat myfile.yml)" https://www.lint-trilogy.com/lint/yaml/json

यह सत्यापन परिणाम incl बचाता है। त्रुटि विवरण (यदि कोई हो) तो json या csv के रूप में या, जहां पर्याप्त हो, सादे पाठ के रूप में सही या गलत है

यह docker file के रूप में भी उपलब्ध है। इसलिए यदि आपको अक्सर REST आधारित लिंटर की आवश्यकता होती है, तो शायद CI / CD पाइपलाइन में, आपकी साइट पर स्वयं के उदाहरण को होस्ट करना आसान हो सकता है।


-9

या वैकल्पिक रूप से स्थापित (मुक्त) ग्रहण आईडीई और फिर YEdit yaml संपादक और अपने yaml को सिंटैक्स हाइलाइटिंग, त्रुटि झंडे, और रूपरेखा विचारों के साथ देखें। एक समय सेटअप लागत मेरे लिए बहुत अच्छी तरह से काम करती है।


3
ओपी ने विशेष रूप से सीएलआई समाधान के लिए कहा।
क्रांतोक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.