Tengo problemas para extraer de un archivo de configuración YAML:
Error fatal: al analizar un mapeo de bloques; <block end> esperado, pero se encontró una entrada de bloque
Si bien hay muchos validadores YAML en línea, que he probado y he ayudado, me gustaría validar mis archivos YAML desde la línea de comandos e integrarlos en mi canal de integración continua.
¿Cómo puedo validar la sintaxis de un archivo YAML en la línea de comando?
travis lint .travis.yml
python -c "from yaml import load, Loader; load(open('.travis.yml'), Loader=Loader)"
Respuestas:
Con la instalación básica de Ruby, esto debería funcionar:
ruby -ryaml -e "p YAML.load(STDIN.read)" < data.yaml
Versión de Python (gracias @Murphy):
pip install pyyaml python -c 'import yaml, sys; print(yaml.safe_load(sys.stdin))' < data.yaml
fuente
puts y
del final de esto, obtendrá un comportamiento UNIX más estándar: si el archivo es válido, no se imprimirá nada, y si no es válido, verá una excepción y un seguimiento de la pila.puts y
, también puede deshacerse dely=
.puts
. El código de retorno es simplemente0
si es válido, de lo contrario, no es cero y obtendrá un seguimiento de pila de excepción. Reduce el ruido en la salida CLI incluso si lo está mirando.ruby -e "require 'yaml';puts YAML.load_file(ARGV[0])"
puede pasar el nombre del archivo después, en lugar de tener que editar el fragmento directamente.Dado que tiene una instalación de perl en el servidor en el que está trabajando, y tiene algunas de las herramientas básicas de YAML, puede usar ...
perl -MYAML -e 'use YAML;YAML::LoadFile("./file.yaml")'
Cabe señalar que esto será estricto en su interpretación del archivo, pero útil.
fuente
Can't locate object method "install" via package "YAML" at -e line 1.
perl -MCPAN -e 'shell'
y luego, en la línea de comandos, hacerloinstall YAML
Podrías usar yamllint . Está disponible en Homebrew, etc. Se puede utilizar para la validación de sintaxis así como para linchar.
fuente
Para corregir tus
.yaml
archivos te recomiendo la herramienta yamllint. Se puede iniciar fácilmente desde la consola local.El paquete
yamllint
está disponible para todos los principales sistemas operativos.Es instalable desde las fuentes del paquete del sistema. (por ejemplo
sudo apt-get install yamllint
). Consulte la documentación para obtener información sobre el inicio rápido y la instalación.fuente
O instale alternativamente (gratis) Eclipse IDE y luego YEdit yaml editor y vea su yaml con resaltado de sintaxis, indicadores de error y vistas de esquema. El costo de configuración único funciona bastante bien para mí.
fuente