我正在评估cuelang.org,以定义数据约束,例如在进一步处理之前,对提交给azure devops管道的不受信任的json有效载荷进行类型或值检查。
当针对无效数据测试我的定义时,我没有返回任何错误。
我想同时进行类型和值检查:
rules.cue:
#LoggingLinuxVM: {
resource_id: #NonEmptyString
version: =~"2020-07-21"
type: =~"Linux"
properties: #LoggingPropertiesLinuxVM
}
#LoggingPropertiesLinuxVM: {
CustomLogFiles: [...#NonEmptyString]
}
#NonEmptyString: string & !=""
有效载荷无效(类型缺失(
{
"resource_id": "/subscription/.../...",
"version": "2020-07-21",
"properties": {
"custom_log_files": [
"/var/log/dmesg",
"/var/log/messages"
]
}
}
当尝试使用:cue vet payload.json rules.cue
对此进行验证时,我希望看到验证错误,但没有引发任何错误,退出状态为0。有没有人以类似的方式使用cuelang,可以看出我哪里错了?
事实证明,您必须提供--schema标志才能以预期的方式进行操作。对于本例,如果json在payload.json中,则完整命令为:
cue vet --schema '#LoggingLinuxVM' payload.json rules.cue