import contextlib import dcc.config import dcc.doom_base import shutil import subprocess import tempfile class Fabricate(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("--fg", action="store_true") return parser def take_action(self, parsed_args): with tempfile.TemporaryDirectory() as td: with contextlib.chdir(td): command = [dcc.config.DSDA] if not parsed_args.fg and shutil.which("xvfb-run") is not None: command = ["xvfb-run"] + command subprocess.run(command + dcc.config.DsdaPreamble(parsed_args.wad, parsed_args.map) + ["-timedemo", dcc.config.DemoInPath(parsed_args.wad, parsed_args.map, parsed_args.name)] + ["-viddump", dcc.config.VideoPath(parsed_args.wad, parsed_args.map, parsed_args.name)])