forked from conan-io/conan-center-index
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config_yaml_linter.py
37 lines (30 loc) · 938 Bytes
/
config_yaml_linter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import argparse
from strictyaml import load, Map, Str, YAMLValidationError, MapPattern
from yaml_linting import file_path
def main():
parser = argparse.ArgumentParser(
description="Validate ConanCenterIndex's 'config.yaml' file."
)
parser.add_argument(
"path",
nargs="?",
type=file_path,
help="file to validate.",
)
args = parser.parse_args()
schema = Map(
{"versions": MapPattern(Str(), Map({"folder": Str()}), minimum_keys=1)}
)
with open(args.path) as f:
content = f.read()
try:
load(content, schema)
except YAMLValidationError as error:
e = error.__str__().replace("\n", "%0A")
print(
f"::error file={args.path},line={error.context_mark.line},endline={error.problem_mark.line},"
f"title=config.yml schema error"
f"::{e}\n"
)
if __name__ == "__main__":
main()