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 = [self.dsda] if not parsed_args.fg and shutil.which("xvfb-run") is not None: command = ["xvfb-run"] + command options = [] for k,v in self._config.get("fabricate_options", {}).items(): list.append(options, f"{k}={v}") if len(options) > 0: options = ["-assign", ",".join(options)] subprocess.run(command + self.dsda_preamble() + options + ["-timedemo", self.demo_in_path()] + ["-viddump", self.video_path()])