如何lint YAML文件,最好是在Ruby中

时间:2014-02-07 01:41:47

标签: ruby yaml

如何点击YAML文件,而不必将其上传到http://yamllint.com

例如,如果我有

people:
  1:
    :name: John Smith
    :name: Jane Smith

如何让它警告我最后:name覆盖了第一个:name

我正在使用Ruby 2.1和Ubuntu 12.04。

3 个答案:

答案 0 :(得分:2)

这是你之后的事吗?

require 'yaml'

def check_yaml(filename)
  unless YAML.dump(YAML.load_file(filename)) == File.read(filename).gsub(/\s*#.*/, '')
    raise 'problem' 
  end
end

check_yaml 'somefile.yml'

答案 1 :(得分:2)

yamllint命令行工具可以完成您的工作 想:

sudo pip install yamllint

具体来说,它有一个检测重复和键的规则key-duplicates 相互叠加:

$ yamllint test.yml
test.yml
  1:1       warning  missing document start "---"  (document-start)
  4:5       error    duplication of key ":name" in mapping  (key-duplicates)

(它有许多其他规则可以启用/禁用或调整。)

答案 2 :(得分:0)

如何导入1.yaml,然后导出到2.yamldiff 1.yaml 2.yaml呢? 无法提供代码 - 在这台机器上没有nix utils,但你已经有了这个想法。