我正在使用pykwalify来验证模式。
给定这个yaml:
variables:
dev:
options:
key: value
uat:
key: value
key2: value
prd:
key: value
key2: value
在变量下,应允许任何映射。在第二个级别(dev、uat、prd(下,应该允许任何键,EXCEPT选项除外"选项";不应该被允许在这里。
我尝试过使用regex,但这只是评估顶级,我不太确定如何评估嵌套在"下面的级别;dev,uat,prd"数量
variables:
type: map
matching-rule: all
mapping:
regex;([^,]+):
type: any
regex;(^(?!.*options:).*$):
type: any
另一个可能的选择是,如果我必须明确列出允许的值,这也会起作用。
我在您的代码片段中看到两个问题:
- 正则表达式匹配除";选项";是错误的
- 架构的结构不适合嵌套映射
下面的模式应该提供您所需要的:
variables:
type: map
matching-rule: all
mapping:
regex;([^,]+):
type: map
mapping:
regex;(^(?!options$).*):
type: any