Как мне проверить свой YAML-файл из командной строки?

У меня возникают проблемы с извлечением из файла конфигурации YAML:

Неустранимая ошибка: при синтаксическом анализе сопоставления блоков; ожидал , но обнаружил запись в блоке

Хотя существует множество онлайн-валидаторов YAML, которые я пробовал и помогал, я хотел бы проверить свои файлы YAML из командную строку и интегрировать ее в мой конвейер непрерывной интеграции.

Как я могу проверить синтаксис файла YAML в командной строке?


148

При базовой установке Ruby это должно работать:

  ruby ​​-ryaml -e "p YAML.load (STDIN.read)"  

Версия Python (спасибо @Murphy) :

  pip install pyyamlpython -c 'import yaml, sys;  print (yaml.safe_load (sys.stdin)) ' 

Улучшите этот ответ
отредактировано 6 декабря ’18 в 10:30
ответил 06 дек. 2013 в 9:23
  • 2
    Если вы удалите , поместит y с конца из этого вы получаете более стандартное поведение UNIX: если файл действителен, ничего не будет напечатано, а если он недействителен, вы увидите исключение и трассировку стека. — bdesham, 22 янв. ’15 в 14:39
  • … и если вы удалите put y , вы также можете избавиться от y = . — bdesham 23 янв. ’15 в 21:35
  • Спасибо, это определенно лучше и короче. — Tombart 25 янв. ’15 в 13:53
  • 1
    И если вы действительно используете это как часть конвейера тестирования ci, тогда нет необходимости в put . Код возврата — это просто 0 , если он действителен, иначе ненулевое значение, и вы получите трассировку стека исключений. Уменьшает шум на выходе CLI, если вы даже смотрите на него. — Джефф Пакетт, 25 февраля 2018, 17:17
  • 1
    Если вы используете следующее: ruby ​​-e "require 'yaml'; добавляет YAML.load_file (ARGV [0])" , вы можете передать имя файла после вместо того, чтобы редактировать фрагмент напрямую. — pnomolos 28 апр. ’18 в 16: 49
| показать 2 дополнительных комментария

При базовой установке Ruby это должно работать:

  ruby ​​-ryaml -e "p YAML.load (STDIN.read)"  

Версия Python (спасибо @Murphy):

  pip install pyyamlpython -c 'import yaml, sys;  print (yaml.safe_load (sys.stdin)) ' 

22

Учитывая, что у вас установлен perl на сервере, над которым вы работаете, и у него есть некоторые из основных инструментов YAML, вы можете использовать …

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

Следует отметить, что это будет строго интерпретировать файл, но будет полезным.

Улучшите этот ответ
ответил 27 дек. ’12 в 22:58
  • 3
    Не могу найти YAML.pm — Натим, 4 августа 2016 г., 12:09
  • 4
    /usr/bin/perl -M CPAN -e ‘install YAML’ — Бен Мэтьюз, 22 сен 2016, 17:18
  • возможно проблема с установкой CPAN, но: Не удается найти метод объекта "install" через пакет "YAML" в строке 1 -e — Cheruvim 09 окт.2020, в 15:56
  • Если вышеуказанное не работает, вы всегда можете попробовать: perl -MCPAN -e 'shell' , а затем в командной строке выполните install YAML — Cheruvim 09 окт. ’20 в 15:57
добавить комментарий |

Учитывая, что у вас установлен perl на сервере, над которым вы работаете, и в нем есть некоторые из основных инструментов YAML, вы можете использовать …

  perl -MYAML -e 'использовать YAML; YAML :: LoadFile ("./file.yaml")'  

Следует отметить, что это будет строгое толкование файла, но полезно.


9

Вы можете использовать yamllint. Он доступен в Homebrew и т.д. Его можно использовать для проверки синтаксиса, а также для линтинга.

Улучшите этот ответ
ответил 16 января ’20 в 20:50
добавить комментарий |

Вы можете использовать yamllint. Он доступен в Homebrew и т. Д. Его можно использовать для проверки синтаксиса, а также для линтинга..


6

Чтобы исправить ваш файлы .yaml Я рекомендую инструмент yamllint. Его можно легко запустить с локальной консоли.

Пакет yamllint доступен для всех основных операционных систем.

Его можно установить из источников пакета системы. (например, sudo apt-get install yamllint ). См. документацию по быстрому запуску и установке.

Улучшите этот ответ
ответил 17 марта ’20 в 15:24
добавить комментарий |

Для исправления ваших файлов .yaml я рекомендую инструмент yamllint. Его можно легко запустить с локальной консоли.

Пакет yamllint доступен для всех основных операционных систем.

Его можно установить из источников пакета системы. (например, sudo apt-get install yamllint ). См. документацию по быстрому запуску и установке.


1

Если в вашей среде не установлен интерпретатор, но все еще есть curl , то вы можете использовать онлайн проект linter, например Lint-Trilogy:

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

Он предоставляет результат проверки, включая описания ошибок (если есть) в формате json или csv или, если достаточно, в виде обычного текста true или false .

Это также доступен как файл докера. Поэтому, если вам часто нужен линтер на основе REST, например, в конвейере CI/CD, может быть удобно разместить собственный экземпляр на вашем сайте.

Улучшите этот ответ
ответил 26 ноября ’20 в 17:09
добавить комментарий |

Если в вашей среде не установлен интерпретатор, но все еще есть curl , то вы можете использовать онлайн-проект линтера, такой как Lint-Trilogy:

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

Он предоставляет результат проверки, включая описания ошибок (если есть) в формате json или csv или, если достаточно, в виде обычного текста true или false .

Это также доступен как файл докера. Поэтому, если вам часто нужен линтер на основе REST, например, в конвейере CI/CD, может быть удобно разместить собственный экземпляр на вашем сайте.


-9

Или поочередно установленная (бесплатная) Eclipse IDE, а затем редактор YEdit yaml и просмотрите свой yaml с подсветкой синтаксиса, флагами ошибок и наброски просмотров. Стоимость одноразовой установки мне подходит.

Улучшите этот ответ
ответил 9 дек. ’13 в 16:55
  • 3
    OP специально запрашивал решения CLI. — crantok 29 авг., 18:44
добавить комментарий |

Или поочередно установленная (бесплатная) Eclipse IDE, а затем YEdit редактор yaml и просмотрите свой yaml с подсветкой синтаксиса, флагами ошибок и представлениями схемы. Стоимость однократной установки мне подходит.



документация yamllint¶

Линтер для YAML файлы.

yamllint не только проверяет правильность синтаксиса, но и обнаруживает странности, такие как повторение клавиш и косметические проблемы, такие как длина строк, конечные пробелы, отступы и т. д.

Скриншот¶

Примечание

Формат вывода по умолчанию вдохновлен eslint, отличным инструментом линтинга для Javascript.

Содержание¶

  • Быстрый запуск
    • Установка yamllint
    • Запуск yamllint
  • Конфигурация
    • Конфигурация по умолчанию
    • Расширение конфигурации по умолчанию
    • Пользовательская конфигурация без файла конфигурации
    • Ошибки и предупреждения
    • Файлы YAML расширения
    • Игнорирование путей
    • Установка языкового стандарта
  • Правила
    • фигурные скобки
    • квадратные скобки
    • двоеточия
    • запятые
    • комментарии
    • комментарии-отступ
    • конец документа
    • начало-документа
    • пустые строки
    • пустые значения
    • дефисы
    • отступы
    • дубликаты ключей
    • порядок ключей
    • длина строки
    • новая строка в конце файла
    • новые строки
    • восьмеричные значения
    • строки в кавычках
    • завершающие пробелы
    • правда
  • Отключить с комментариями
    • Отключение проверок для указанного c строка
    • Отключение проверок для всего (или части) файла
    • Отключение всех проверок для файла
  • Разработка
  • Интеграция с текстовыми редакторами
    • Vim
    • Neovim
    • Emacs
    • Другие текстовые редакторы
  • Интеграция с другим программным обеспечением
    • Интеграция с предварительной фиксацией
    • Интеграция с действиями GitHub
Оцените статью
logicle.ru
Добавить комментарий