validate

Imported skill validate from anthropic

SKILL.md

GitHub

#!/usr/bin/env python3 """ Command line tool to validate Office document XML files against XSD schemas and tracked changes.

Usage: python validate.py <dir> --original <original_file> """

import argparse import sys from pathlib import Path

from validation import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator

def main(): parser = argparse.ArgumentParser(description="Validate Office document XML files") parser.add_argument( "unpacked_dir", help="Path to unpacked Office document directory", ) parser.add_argument( "--original", required=True, help="Path to original file (.docx/.pptx/.xlsx)", ) parser.add_argument( "-v", "--verbose", action="store_true", help="Enable verbose output", ) args = parser.parse_args()

# Validate paths
unpacked_dir = Path(args.unpacked_dir)
original_file = Path(args.original)
file_extension = original_file.suffix.lower()
assert unpacked_dir.is_dir(), f"Error: {unpacked_dir} is not a directory"
assert original_file.is_file(), f"Error: {original_file} is not a file"
assert file_extension in [".docx", ".pptx", ".xlsx"], (
    f"Error: {original_file} must be a .docx, .pptx, or .xlsx file"
)

# Run validations
match file_extension:
    case ".docx":
        validators = [DOCXSchemaValidator, RedliningValidator]
    case ".pptx":
        validators = [PPTXSchemaValidator]
    case _:
        print(f"Error: Validation not supported for file type {file_extension}")
        sys.exit(1)

# Run validators
success = True
for V in validators:
    validator = V(unpacked_dir, original_file, verbose=args.verbose)
    if not validator.validate():
        success = False

if success:
    print("All validations PASSED!")

sys.exit(0 if success else 1)

if name == "main": main()