আমি কীভাবে কমান্ড লাইন থেকে আমার YAML ফাইলকে বৈধতা দেব?


91

ওয়াইএএমএল কনফিগারেশন ফাইলটি থেকে টানতে আমার সমস্যা হচ্ছে:

মারাত্মক ত্রুটি: একটি ব্লক ম্যাপিং পার্স করার সময়; প্রত্যাশিত <ব্লক শেষ>, কিন্তু ব্লক এন্ট্রি পাওয়া গেছে

যদিও প্রচুর পরিমাণে অনলাইন ওয়াইএএমএল বৈধকরণকারী রয়েছে, যা আমি চেষ্টা করেছি এবং সহায়তা করেছি, আমি আমার YAML ফাইলগুলি কমান্ড লাইন থেকে বৈধতা দিতে এবং এটিকে আমার অবিচ্ছিন্ন ইন্টিগ্রেশন পাইপলাইনে সংহত করতে চাই।

কমান্ড লাইনে কোনও ওয়াইএএমএল ফাইলের সিনট্যাক্সটি কীভাবে যাচাই করতে পারি?


4
চেষ্টা করুন:travis lint .travis.yml
কেনরোব

4
python -c "from yaml import load, Loader; load(open('.travis.yml'), Loader=Loader)"
নাতিম

21
এই প্রশ্নটি বন্ধ করা উচিত নয়। সম্ভবত এটি "কমান্ড লাইন থেকে আমার ওয়াইএএমএল ফাইলকে কীভাবে যাচাই করব" -এ পুনরায় শব্দ করুন। এটি একটি বৈধ এবং দরকারী প্রশ্ন
হ্যানেক্সু

4
সেকেন্ডড @hanxue - বিষয় অনুসন্ধান করার সময় এটি প্রথম ফলাফল হিসাবে উঠে আসে এবং যখন গুগল আমাদের এখানে অবতরণ করে তখন একটি দরকারী রেফারেন্স হওয়া উচিত।
brice

4
হ্যাঁ, এই প্রশ্নটি বন্ধ করা উচিত নয়। আমি মনে করি না যে উত্তরগুলি মতামতযুক্ত বা স্প্যাম।
জোয়ে নোভাক

উত্তর:


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

4
যদি আপনি এর প্রান্তটি সরিয়ে ফেলেন puts yতবে আপনি আরও মানসম্পন্ন ইউনিক্স আচরণ পাবেন: ফাইলটি বৈধ হলে কোনও কিছুই মুদ্রিত হবে না এবং যদি এটি অবৈধ হয় তবে আপনি একটি ব্যতিক্রম এবং স্ট্যাক ট্রেস দেখতে পাবেন।
বিদেশাম

… এবং আপনি যদি অপসারণ করেন তবে puts yআপনি এ থেকেও মুক্তি পেতে পারেন y=
বিডেশাম

ধন্যবাদ, এটি অবশ্যই আরও ভাল এবং খাটো।
টম্বার্ট

4
এবং যদি আপনি সত্যই এটি কেবল সিআই টেস্ট পাইপলাইনের অংশ হিসাবে ব্যবহার করেন তবে তা করার দরকার নেই puts। রিটার্ন কোডটি 0যদি বৈধ হয় তবে অন্যথায় শূন্য নয় এবং আপনি একটি ব্যতিক্রম স্ট্যাক ট্রেস পাবেন। আপনি এমনকি যদি এটির দিকে তাকিয়ে থাকেন তবে সিএলআই আউটপুটে শব্দ কমিয়ে দেয়।
জেফ পেকেট

4
আপনি যদি নিম্নলিখিতটি ব্যবহার করেন: ruby -e "require 'yaml';puts YAML.load_file(ARGV[0])"আপনি পরে স্নিপেটটি সরাসরি সম্পাদনা করার পরিবর্তে ফাইলের নাম পরে দিতে পারেন can
pnomolos

22

আপনি যে সার্ভারটিতে কাজ করছেন তার উপর আপনার পার্ল ইনস্টল রয়েছে এবং এটিতে কয়েকটি প্রাথমিক YAML সরঞ্জাম রয়েছে, আপনি ব্যবহার করতে পারেন ...

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

এটি লক্ষ্য করা উচিত যে এটি ফাইলটির ব্যাখ্যাতে এটি কঠোর হবে, তবে দরকারী।


4
YAML.pm সনাক্ত করতে পারে না
নাতিম

4
/ usr / bin / perl -MCPAN -e 'YAML ইনস্টল করুন'
বেন ম্যাথিউজ

সম্ভবত Can't locate object method "install" via package "YAML" at -e line 1.
সিপিএএন

perl -MCPAN -e 'shell'install YAML
উপরেরটি

9

আপনি yamllint ব্যবহার করতে পারে । এটি হোমব্রিউ ইত্যাদিতে উপলভ্য It এটি সিনট্যাক্স বৈধতার পাশাপাশি আবদ্ধকরণের জন্যও ব্যবহার করা যেতে পারে।


6

আপনার .yamlফাইলগুলি সংশোধন করতে আমি yamllint সরঞ্জামটি সুপারিশ করি। এটি স্থানীয় কনসোল থেকে সহজেই চালু করা যেতে পারে।

প্যাকেজটি yamllintসমস্ত বড় অপারেটিং সিস্টেমের জন্য উপলব্ধ।

এটি সিস্টেমের প্যাকেজ উত্স থেকে ইনস্টলযোগ্য। (যেমন sudo apt-get install yamllint) দ্রুত শুরু এবং ইনস্টলেশন জন্য ডকুমেন্টেশন দেখুন।


1

আপনি যদি আপনার পরিবেশে কোনও দোভাষী না পেয়ে থাকেন তবে তবুও কার্ল পেয়ে থাকেন তবে আপনি লিন্ট-ট্রিলজির মতো একটি অনলাইন লিন্টার প্রকল্প ব্যবহার করতে পারেন :

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

এটি বৈধতা ফলাফল সহ সরবরাহ করে। জাসন বা সিএসভি হিসাবে ত্রুটি বর্ণনা (যদি থাকে) বা যেখানে পর্যাপ্ত থাকে ঠিক তেমন পাঠ্য সত্য বা মিথ্যা

এটি ডকার ফাইল হিসাবেও উপলব্ধ। সুতরাং আপনার যদি প্রায়শই একটি রেস্ট ভিত্তিক লিন্টার প্রয়োজন হয়, সম্ভবত কোনও সিআই / সিডি পাইপলাইনে আপনার সাইটে নিজস্ব ঘটনা হোস্ট করা সহজ হতে পারে।


-9

অথবা পর্যায়ক্রমে ইনস্টল করা (নিখরচায়) Elpipse IDE এবং তারপরে YEdit yaml সম্পাদক এবং আপনার ইয়ামলটি সিনট্যাক্স হাইলাইটিং, ত্রুটির পতাকা এবং বাহ্যরেখা দর্শনগুলি দেখুন। এক সময় সেটআপ ব্যয় আমার জন্য বেশ ভাল কাজ করে।


4
ওপি বিশেষত সিএলআই সমাধানের জন্য বলেছে।
ক্র্যানটোক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.