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