1#!/usr/bin/env python
2"""Generate FreeType reference documentation."""
3
4from __future__ import print_function
5
6import argparse
7import glob
8import os
9import subprocess
10import sys
11
12
13def main():
14    parser = argparse.ArgumentParser(description=__doc__)
15
16    parser.add_argument(
17        "--input-dir",
18        required=True,
19        help="Top-level FreeType source directory.",
20    )
21
22    parser.add_argument(
23        "--version", required=True, help='FreeType version (e.g. "2.x.y").'
24    )
25
26    parser.add_argument(
27        "--output-dir", required=True, help="Output directory."
28    )
29
30    args = parser.parse_args()
31
32    # Get the list of input files of interest.
33    include_dir = os.path.join(args.input_dir, "include")
34    include_config_dir = os.path.join(include_dir, "config")
35    include_cache_dir = os.path.join(include_dir, "cache")
36
37    all_headers = (
38        glob.glob(os.path.join(args.input_dir, "include", "freetype", "*.h"))
39        + glob.glob(
40            os.path.join(
41                args.input_dir, "include", "freetype", "config", "*.h"
42            )
43        )
44        + glob.glob(
45            os.path.join(
46                args.input_dir, "include", "freetype", "cache", "*.h"
47            )
48        )
49    )
50
51    if not os.path.exists(args.output_dir):
52        os.makedirs(args.output_dir)
53    else:
54        assert os.path.isdir(args.output_dir), (
55            "Not a directory: " + args.output_dir
56        )
57
58    cmds = [
59        sys.executable,
60        "-m",
61        "docwriter",
62        "--prefix=ft2",
63        "--title=FreeType-" + args.version,
64        "--site=reference",
65        "--output=" + args.output_dir,
66    ] + all_headers
67
68    print("Running docwriter...")
69    subprocess.check_call(cmds)
70
71    print("Building static site...")
72    subprocess.check_call(
73        [sys.executable, "-m", "mkdocs", "build"], cwd=args.output_dir
74    )
75    return 0
76
77
78if __name__ == "__main__":
79    sys.exit(main())
80