用Perl检查您的DuckDuckGo速查表

随着DuckDuckGo的全球Quack & Hack活动即将到来,我整理了一个脚本用于检查速查表。该脚本检查速查表是否为有效的JSON格式,并具有所需的条目和值。
设置
要运行此脚本,从GitHub下载它。它需要JSON和HTTP::Tiny Perl模块,您可以在终端使用cpan
进行安装
$ cpan JSON HTTP::Tiny
确保也为脚本赋予执行权限
$ chmod 744 cheatsheet_check
使用方法
一旦您有了要检查的JSON格式的速查表,只需将文件路径传递给cheatsheet_check
$ ./cheatsheet_check /path/to/cheatsheet.json
perldoc
速查表的示例输出
# Subtest: file
ok 1 - file exists
ok 2 - filename is appropriate
ok 3 - file content can be read
ok 4 - content is valid JSON
1..4
ok 1 - file
# Subtest: headers
ok 1 - has id
ok 2 - has name
ok 3 - has description
1..3
ok 2 - headers
# Subtest: metadata
ok 1 - has metadata
ok 2 - has metadata sourceName
ok 3 - has metadata sourceUrl
ok 4 - sourceUrl is not undef
ok 5 - fetch sourceUrl
1..5
ok 3 - metadata
# Subtest: sections
ok 1 - has section_order
ok 2 - section_order is an array of section names
ok 3 - has sections
ok 4 - sections is a hash of section key/pairs
ok 5 - 'Usage' exists in sections
ok 6 - 'Module Options' exists in sections
ok 7 - 'Search Options' exists in sections
ok 8 - 'Common Options' exists in sections
ok 9 - 'Search Options' exists in section_order
ok 10 - 'Search Options' is an array
ok 11 - 'Search Options' entry: 0 has a key
ok 12 - 'Search Options' entry: 0 has a val
ok 13 - 'Search Options' entry: 1 has a key
ok 14 - 'Search Options' entry: 1 has a val
ok 15 - 'Search Options' entry: 2 has a key
ok 16 - 'Search Options' entry: 2 has a val
ok 17 - 'Common Options' exists in section_order
ok 18 - 'Common Options' is an array
ok 19 - 'Common Options' entry: 0 has a key
ok 20 - 'Common Options' entry: 0 has a val
ok 21 - 'Common Options' entry: 1 has a key
ok 22 - 'Common Options' entry: 1 has a val
ok 23 - 'Common Options' entry: 2 has a key
ok 24 - 'Common Options' entry: 2 has a val
ok 25 - 'Common Options' entry: 3 has a key
ok 26 - 'Common Options' entry: 3 has a val
ok 27 - 'Common Options' entry: 4 has a key
ok 28 - 'Common Options' entry: 4 has a val
ok 29 - 'Module Options' exists in section_order
ok 30 - 'Module Options' is an array
ok 31 - 'Module Options' entry: 0 has a key
ok 32 - 'Module Options' entry: 0 has a val
ok 33 - 'Module Options' entry: 1 has a key
ok 34 - 'Module Options' entry: 1 has a val
ok 35 - 'Module Options' entry: 2 has a key
ok 36 - 'Module Options' entry: 2 has a val
ok 37 - 'Module Options' entry: 3 has a key
ok 38 - 'Module Options' entry: 3 has a val
ok 39 - 'Usage' exists in section_order
ok 40 - 'Usage' is an array
ok 41 - 'Usage' entry: 0 has a key
ok 42 - 'Usage' entry: 0 has a val
ok 43 - 'Usage' entry: 1 has a key
ok 44 - 'Usage' entry: 1 has a val
1..44
ok 4 - sections
1..4
这将对速查表运行超过20个不同的测试。脚本检查JSON是否有效,所需的标题是否存在(例如id、name和description)。它检查元数据是否有效并指向一个活动URL。最后,它检查章节是否有效并且映射正确。
总结
记住,即使速查表通过了所有测试,您仍然需要在浏览器中检查其外观。App::DuckPAN可以帮助您完成这项工作。本周六,我将参加在Orbital举行的纽约市Quack & Hack活动。我期待在那里见到大家!
更新:添加了HTTP::Tiny依赖项。2015-08-28
这篇文章最初发布在PerlTricks.com。
标签
反馈
这篇文章有什么问题吗?通过在GitHub上打开问题或拉取请求来帮助我们