From 2aec573d313e806bc32083efda0b746228cf6b14 Mon Sep 17 00:00:00 2001 From: Supakorn 'Jamie' Rassameemasmuang Date: Mon, 12 Aug 2024 00:45:57 -0600 Subject: [PATCH] CMAKE: Add rule for generating options file for doc. --- cmake-scripts/docgen.cmake | 10 ++++++++++ doc/gen-asy-options-file.py | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 doc/gen-asy-options-file.py diff --git a/cmake-scripts/docgen.cmake b/cmake-scripts/docgen.cmake index 27f195c69..cd921f92b 100644 --- a/cmake-scripts/docgen.cmake +++ b/cmake-scripts/docgen.cmake @@ -100,3 +100,13 @@ foreach(ASY_DOC_FILE_PREFIX ${ASY_DOC_FILE_PREFIXES}) ) list(APPEND ASY_DOC_PDF_FILES ${ASY_DOC_FILE_OUTPUT}) endforeach() + + +# options file +add_custom_command( + OUTPUT ${ASY_TEX_BUILD_ROOT}/options + DEPENDS asy ${ASY_DOC_ROOT}/gen-asy-options-file.py + COMMAND ${PY3_INTERPRETER} ${ASY_DOC_ROOT}/gen-asy-options-file.py + --asy-executable=$ + --output-file=${ASY_TEX_BUILD_ROOT}/options +) diff --git a/doc/gen-asy-options-file.py b/doc/gen-asy-options-file.py new file mode 100644 index 000000000..e1cd76131 --- /dev/null +++ b/doc/gen-asy-options-file.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +import argparse +import subprocess +import subprocess as sp + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument("--asy-executable", type=str, default="asy") + parser.add_argument("--output-file", type=str, required=True) + return parser.parse_args() + + +def main(): + args = parse_args() + asy_output = sp.run( + [args.asy_executable, "-h"], + check=True, + stderr=subprocess.STDOUT, + stdout=subprocess.PIPE, + text=True, + ) + + with open(args.output_file, "w", encoding="utf-8") as f: + for line in asy_output.stdout.splitlines(): + stripped_lines = line.strip() + if ( + stripped_lines.startswith("Asymptote") + or stripped_lines.startswith("http") + or stripped_lines.startswith("Usage:") + ): + continue + f.write(line) + f.write("\n") + + +if __name__ == "__main__": + main()