mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-02 18:58:27 +02:00
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from source.wt import *
|
|
|
|
tools_path = tools_szs_dir / "wszst.exe"
|
|
|
|
|
|
class SZSPath:
|
|
|
|
def __init__(self, path: Path | str):
|
|
self.path: Path = path if isinstance(path, Path) else Path(path)
|
|
|
|
@better_error(tools_path)
|
|
def _run(self, *args) -> bytes:
|
|
"""
|
|
Return a command with wszst and return the output
|
|
:param args: command arguments
|
|
:return: the output of the command
|
|
"""
|
|
return subprocess.run(
|
|
[tools_path, *args],
|
|
stdout=subprocess.PIPE,
|
|
check=True,
|
|
creationflags=subprocess.CREATE_NO_WINDOW
|
|
).stdout
|
|
|
|
def cat(self, subfile: str) -> bytes:
|
|
"""
|
|
Run the cat command (read a subfile) and return the output
|
|
:param subfile: subfile name
|
|
:return: the content of the subfile
|
|
"""
|
|
return self._run("cat", self.path / subfile)
|
|
|
|
def extract(self, subfile: str, dest: Path | str) -> Path:
|
|
"""
|
|
Extract a subfile to a destination
|
|
:param subfile: subfile name
|
|
:param dest: destination path
|
|
:return: the extracted file path
|
|
"""
|
|
dest = dest if isinstance(dest, Path) else Path(dest)
|
|
with dest.open("wb") as file:
|
|
file.write(self.cat(subfile))
|
|
|
|
return dest
|