MCPcopy Create free account
hub / github.com/ClangBuiltLinux/tc-build / Builder

Class Builder

tc_build/builder.py:21–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

19
20
21class Builder:
22 def __init__(self) -> None:
23 self.folders: Folders = Folders()
24 self.show_commands: bool = False
25
26 def build(self) -> None:
27 raise NotImplementedError
28
29 def clean_build_folder(self) -> None:
30 if not tc_build.utils.path_is_set(self.folders.build):
31 msg = 'No build folder set?'
32 raise RuntimeError(msg)
33
34 if self.folders.build.exists():
35 if self.folders.build.is_dir():
36 shutil.rmtree(self.folders.build)
37 else:
38 self.folders.build.unlink()
39
40 def make_build_folder(self) -> None:
41 if not tc_build.utils.path_is_set(self.folders.build):
42 msg = 'No build folder set?'
43 raise RuntimeError(msg)
44
45 self.folders.build.mkdir(parents=True)
46
47 def run_cmd(
48 self, cmd: tc_build.utils.ValidCmd, capture_output: bool = False, cwd: Path | None = None
49 ) -> subprocess.CompletedProcess:
50 if self.show_commands:
51 # Acts sort of like 'set -x' in bash
52 print(f"$ {' '.join([shlex.quote(str(elem)) for elem in cmd])}", flush=True)
53 try:
54 return subprocess.run(
55 cmd, capture_output=capture_output, check=True, cwd=cwd, text=True
56 )
57 except subprocess.CalledProcessError as err:
58 if capture_output:
59 if err.stdout:
60 print(err.stdout)
61 if err.stderr:
62 print(err.stderr)
63 raise

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected