Blob Blame History Raw
#!/usr/bin/env python3
# vim: sw=4 ts=4 et si:

import sys
from optparse import OptionParser
from suse_git import header

if __name__ == "__main__":
    parser = OptionParser(usage="%prog [options] [files] -- check patch header correctness")
    parser.add_option('', '--stdin', action="store_true",
                      help="pass patch contents via stdin",
                      default=False)
    parser.add_option('', '--update', action="store_true",
                    help="use more relaxed checks for already-commited patches",
                    default=False)

    (options, args) = parser.parse_args()

    if not args and not options.stdin:
        parser.error("Must either provide filename(s) or use --stdin")
        sys.exit(128)

    if options.stdin and len(args) > 1 :
        parser.error("Only one filename can be used with --stdin")
        sys.exit(128)

    errors = 0
    if options.stdin:
        if args:
            fn = args[0]
        else:
            fn = "<stdin>"
        try:
            checker = header.Checker(sys.stdin, options.update, fn)
        except header.HeaderException as e:
            print(e.error_message(fn), file=sys.stderr)
            if not fn.startswith("patches.xen/"):
                errors += 1
    else:
        for fn in args:
            try:
                f = open(fn)
                checker = header.Checker(f, options.update, fn)
                f.close()
            except header.HeaderException as e:
                print(e.error_message(fn), file=sys.stderr)
                if not fn.startswith("patches.xen/"):
                    errors += 1
                if errors > 1:
                    print("", file=sys.stderr)

    if errors:
        print("Please check README file for patch tag rules.", file=sys.stderr)
        sys.exit(1)