diff --git a/cours/build.py b/cours/build.py index 1ab64d9..5124c4b 100755 --- a/cours/build.py +++ b/cours/build.py @@ -1,13 +1,31 @@ +import argparse import os import sys import shutil import subprocess +def run(*cmd): + print("$", *cmd) + process = subprocess.run(cmd) + if process.returncode != 0: + sys.exit(1) + + def main(): - dev = "--dev" in sys.argv - werror = "--werror" in sys.argv + parser = argparse.ArgumentParser() + parser.add_argument("--dev", action="store_true", help="Run with a live server") + parser.add_argument( + "--werror", action="store_true", help="Treat warnings as errors" + ) + parser.add_argument("--clean", action="store_true", help="Clean first") + parser.add_argument("--format", help="Output format", default="html") + args = parser.parse_args() + + dev = args.dev + werror = args.werror clean = "--clean" in sys.argv + format = args.format if dev: program = "sphinx-autobuild" else: @@ -18,11 +36,15 @@ def main(): shutil.rmtree("build") if werror: opts.append("-W") - cmd = [program, *opts, "-d", "build", "-b", "html", "source", "build/html"] - print("$", *cmd) - process = subprocess.run(cmd) - if process.returncode != 0: - sys.exit(1) + if format == "html": + builder = "html" + elif format == "pdf": + builder = "latex" + build_path = f"build/{builder}" + run(program, *opts, "-d", "build", "-b", builder, "source", build_path) + if format == "pdf": + run("make", "-C", build_path) + print("pdf generated in", build_path) if __name__ == "__main__":