#!/usr/bin/env python

import sys
from hocrlib import HocrValidator, HocrSpec
from argparse import ArgumentParser

def main(args):
    validator = HocrValidator(args.profile)
    failed = 0
    for source in args.sources:
        report = validator.validate(source, parse_strict=args.parse_strict)
        failed += not report.is_valid()
        if not args.silent:
            print(report.format(args.format))
    sys.exit(0 if not failed else 1)

if __name__ == "__main__":
    parser = ArgumentParser()
    parser.add_argument(
        'sources', nargs='+', help="HOCR file to check or '-' to read from STDIN")
    parser.add_argument(
        '--list-profiles', '-P', action='store_true', help="List spec profiles")
    parser.add_argument(
        '--format',
        '-f',
        choices=HocrValidator.formats,
        default=HocrValidator.formats[0],
        help="Report format")
    parser.add_argument(
        '--profile',
        '-p',
        default='standard',
        choices=HocrSpec.profiles.keys(),
        help="Validation profile")
    parser.add_argument(
        '--skip-check',
        action='store_true',
        help="Parse HOCR as XML instead of HTML and die on errors")
    parser.add_argument(
        '--parse-strict',
        action='store_true',
        help="Parse HOCR as XML instead of HTML and die on errors")
    parser.add_argument(
        '--silent',
        '-s',
        action='store_true',
        help="Don't produce any output but signal success with exit code.")
    args = parser.parse_args()
    if args.list_profiles:
        for name in HocrSpec.profiles:
            profile = HocrSpec.profiles[name]
            print(" * %s: %s" % (name, profile.description)) 
        sys.exit(0)
    main(args)
