diff --git a/.gitea/workflows/validate-config.yaml b/.gitea/workflows/validate-config.yaml index 3025807d..b5fb6b80 100644 --- a/.gitea/workflows/validate-config.yaml +++ b/.gitea/workflows/validate-config.yaml @@ -112,23 +112,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Install PyYAML + run: pip install pyyaml - name: Validate playbook structure - run: | - python3 -c " -import yaml, sys, glob -required_keys = {'name', 'description'} -for f in glob.glob('playbooks/*.yaml'): - with open(f) as fh: - try: - data = yaml.safe_load(fh) - if not isinstance(data, dict): - print(f'ERROR: {f} is not a YAML mapping') - sys.exit(1) - missing = required_keys - set(data.keys()) - if missing: - print(f'WARNING: {f} missing keys: {missing}') - print(f'OK: {f}') - except yaml.YAMLError as e: - print(f'ERROR: {f}: {e}') - sys.exit(1) -" \ No newline at end of file + run: python3 scripts/validate_playbook_schema.py diff --git a/scripts/validate_playbook_schema.py b/scripts/validate_playbook_schema.py new file mode 100644 index 00000000..36921227 --- /dev/null +++ b/scripts/validate_playbook_schema.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +"""Validate playbook YAML files have required keys.""" +import yaml +import sys +import glob + +required_keys = {'name', 'description'} + +for f in glob.glob('playbooks/*.yaml'): + with open(f) as fh: + try: + data = yaml.safe_load(fh) + if not isinstance(data, dict): + print(f'ERROR: {f} is not a YAML mapping') + sys.exit(1) + missing = required_keys - set(data.keys()) + if missing: + print(f'WARNING: {f} missing keys: {missing}') + print(f'OK: {f}') + except yaml.YAMLError as e: + print(f'ERROR: {f}: {e}') + sys.exit(1)