Allow variable substitution in command line defines

Attempt to fix edge cases where other extensions need to know about the
actual source path.

Resolves: #4
This commit is contained in:
Jan Holthuis 2020-04-11 03:12:43 +02:00
parent 36dd38306a
commit b4b5cc6281

View file

@ -6,6 +6,7 @@ import logging
import os import os
import pathlib import pathlib
import re import re
import string
import subprocess import subprocess
import sys import sys
import tempfile import tempfile
@ -199,22 +200,29 @@ def main(argv=None):
# Run Sphinx # Run Sphinx
argv.extend(["-D", "smv_metadata_path={}".format(metadata_path)]) argv.extend(["-D", "smv_metadata_path={}".format(metadata_path)])
for version_name, data in metadata.items(): for version_name, data in metadata.items():
outdir = os.path.join(args.outputdir, data["outputdir"]) data["confdir"] = confdir
os.makedirs(outdir, exist_ok=True) data["outputdir"] = os.path.join(args.outputdir, data["outputdir"])
os.makedirs(data["outputdir"], exist_ok=True)
defines = itertools.chain(*(
("-D", string.Template(d).safe_substitute(data))
for d in args.define
))
current_argv = argv.copy() current_argv = argv.copy()
current_argv.extend( current_argv.extend(
[ [
*itertools.chain(*(("-D", d) for d in args.define)), *defines,
"-D", "-D",
"smv_current_version={}".format(version_name), "smv_current_version={}".format(version_name),
"-c", "-c",
confdir, data["confdir"],
data["sourcedir"], data["sourcedir"],
outdir, data["outputdir"],
*args.filenames, *args.filenames,
] ]
) )
logger.debug("Running sphinx-build with args: %r", current_argv)
status = sphinx_build.build_main(current_argv) status = sphinx_build.build_main(current_argv)
if status not in (0, None): if status not in (0, None):
break break