diff options
author | Mathieu Bridon <bochecha@daitauha.fr> | 2018-08-04 17:19:19 +0200 |
---|---|---|
committer | Mathieu Bridon <bochecha@daitauha.fr> | 2018-08-04 23:02:10 +0200 |
commit | f69a02874e482723061f7a5d125ae4384fec4cc9 (patch) | |
tree | 8a9a0ea4c7363e5871ef5c068be4d84dc9d67d66 /doc/bst2html.py | |
parent | f918205a2a91beb49ebdcf593b233892c9ebe63c (diff) | |
download | buildstream-f69a02874e482723061f7a5d125ae4384fec4cc9.tar.gz |
doc: Build the docs without Buildstream installedbochecha/build-docs
Diffstat (limited to 'doc/bst2html.py')
-rwxr-xr-x | doc/bst2html.py | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/doc/bst2html.py b/doc/bst2html.py index c9e98bb36..d87085f54 100755 --- a/doc/bst2html.py +++ b/doc/bst2html.py @@ -37,6 +37,7 @@ import click from buildstream import _yaml from buildstream import utils +from buildstream._frontend import cli as bst_cli from buildstream._exceptions import BstError @@ -175,6 +176,20 @@ def ansi2html(text, palette='solarized'): return sub +@contextmanager +def capture_stdout_stderr(): + from io import StringIO + + capture = StringIO() + oldstdout, sys.stdout = sys.stdout, capture + oldstderr, sys.stderr = sys.stderr, capture + + yield capture + + sys.stdout = oldstdout + sys.stderr = oldstderr + + # workdir() # # Sets up a new temp directory with a config file @@ -219,10 +234,15 @@ def workdir(source_cache=None): def run_command(config_file, directory, command): click.echo("Running command in directory '{}': bst {}".format(directory, command), err=True) - argv = ['bst', '--colors', '--config', config_file] + shlex.split(command) - p = subprocess.Popen(argv, cwd=directory, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - out, _ = p.communicate() - return out.decode('utf-8').strip() + args = ['--colors', '--config', config_file, '--directory', directory] + shlex.split(command) + + with capture_stdout_stderr() as capture: + bst_cli.main(args=args, prog_name=bst_cli.name) + + capture.flush() + out = capture.getvalue() + + return out.strip() # generate_html |