mirror of
https://github.com/conan-io/conan-center-index.git
synced 2025-08-07 03:05:07 +00:00

* first attempt at a yaml linter wit github actions output * This is less strict but has more information * fixup message * run config linter in Action * better ux feedback * try to use newlines https://github.com/actions/toolkit/issues/193#issuecomment-605394935 * clean up * fixup file name * trying custom class for quoted str * underlying yaml parser does not keep quotes * trying to catch ints as problems * remove test code * and to "linter testing" * install deps * run new linter unconditionally * revert testing changes * new script for conandata (this one is much harder to spec) * debugging * lets see all the errors * yamale -s ../linter/config_yaml_schema.yml aaf/config.yml from linters folder as a test * adjust script to match meeting discussion * make sure the docs and linters match * fix link * Update conandata.yml * exit 1 is not needed with annotations * add annotation matchers for yaml since those do do much * fix search for type * fix whitespace * tryout a yamllint file with a better looking matcher * copy syntax from readme * test if it's running in the wrong dir 🤔 * try with debug output * bump since i dont have permissions * bump - dont glob star * bump * less star globs * also add action to conandata way * bump * drop action for cli + matcher * more docs around linters * fix file and name * cleanup
38 lines
938 B
Python
38 lines
938 B
Python
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()
|