#!/usr/bin/env python

from __future__ import print_function

import os.path as osp
import re
import shlex
import subprocess
import sys


here = osp.dirname(osp.abspath(__file__))

cmd = "help2man labelme"
man_expected = subprocess.check_output(shlex.split(cmd)).decode().splitlines()

man_file = osp.realpath(osp.join(here, "../../../docs/man/labelme.1"))
with open(man_file) as f:
    man_actual = f.read().splitlines()

patterns_exclude = [
    r"^\.TH .*",
    r"^.*/\.labelmerc\)$",
    r"^\.\\.*",
]

PASS = 1
for line_expected, line_actual in zip(man_expected, man_actual):
    for pattern in patterns_exclude:
        if re.match(pattern, line_expected) or re.match(pattern, line_actual):
            break
    else:
        if line_expected != line_actual:
            print(repr("> {}".format(line_expected)), file=sys.stderr)
            print(repr("< {}".format(line_actual)), file=sys.stderr)
            PASS = 0

if not PASS:
    print(
        "Please run:\n\n\thelp2man labelme > {}\n".format(man_file),
        file=sys.stderr,
    )
assert PASS