| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/usr/bin/env python3
- """
- Script to verify that the 'bots' field in data/botPolicies.yaml
- has the same semantic contents as data/meta/default-config.yaml.
- CW: generated by AI
- """
- import yaml
- import sys
- import os
- import subprocess
- import difflib
- def load_yaml(file_path):
- """Load YAML file and return the data."""
- try:
- with open(file_path, 'r') as f:
- return yaml.safe_load(f)
- except Exception as e:
- print(f"Error loading {file_path}: {e}")
- sys.exit(1)
- def normalize_yaml(data):
- """Normalize YAML data by removing comments and standardizing structure."""
- # For lists, just return as is, since YAML comments are stripped by safe_load
- return data
- def get_repo_root():
- """Get the root directory of the git repository."""
- try:
- result = subprocess.run(['git', 'rev-parse', '--show-toplevel'], capture_output=True, text=True, check=True)
- return result.stdout.strip()
- except subprocess.CalledProcessError:
- print("Error: Not in a git repository")
- sys.exit(1)
- def main():
- # Get the git repository root
- repo_root = get_repo_root()
- # Paths relative to the repo root
- bot_policies_path = os.path.join(repo_root, 'data', 'botPolicies.yaml')
- default_config_path = os.path.join(repo_root, 'data', 'meta', 'default-config.yaml')
- # Load the files
- bot_policies = load_yaml(bot_policies_path)
- default_config = load_yaml(default_config_path)
- # Extract the 'bots' field from botPolicies.yaml
- if 'bots' not in bot_policies:
- print("Error: 'bots' field not found in botPolicies.yaml")
- sys.exit(1)
- bots_field = bot_policies['bots']
- # The default-config.yaml is a list directly
- default_bots = default_config
- # Normalize both
- normalized_bots = normalize_yaml(bots_field)
- normalized_default = normalize_yaml(default_bots)
- # Compare
- if normalized_bots == normalized_default:
- print("SUCCESS: The 'bots' field in botPolicies.yaml matches the contents of default-config.yaml")
- sys.exit(0)
- else:
- print("FAILURE: The 'bots' field in botPolicies.yaml does not match the contents of default-config.yaml")
- print("\nDiff:")
- bots_yaml = yaml.dump(normalized_bots, default_flow_style=False)
- default_yaml = yaml.dump(normalized_default, default_flow_style=False)
- diff = difflib.unified_diff(
- bots_yaml.splitlines(keepends=True),
- default_yaml.splitlines(keepends=True),
- fromfile='bots field in botPolicies.yaml',
- tofile='default-config.yaml'
- )
- print(''.join(diff))
- sys.exit(1)
- if __name__ == "__main__":
- main()
|