(*args: str, msg: Optional[str] = None, verbose: bool = False, **kwargs: Any)
| 58 | |
| 59 | # NOTE: the return type should be Popen[str], but Popen is not subscriptable before python 3.9 |
| 60 | def run(*args: str, msg: Optional[str] = None, verbose: bool = False, **kwargs: Any) -> Popen: |
| 61 | sys.stdout.flush() |
| 62 | if verbose: |
| 63 | print(f"$ {' '.join(args)}") |
| 64 | |
| 65 | p = Popen(args, **kwargs) |
| 66 | code = p.wait() |
| 67 | if code != 0: |
| 68 | err = f"\nfailed to run: {args}\nexit with code: {code}\n" |
| 69 | if msg: |
| 70 | err += f"error message: {msg}\n" |
| 71 | raise RuntimeError(err) |
| 72 | |
| 73 | return p |
| 74 | |
| 75 | |
| 76 | def run_pipe(*args: str, msg: Optional[str] = None, verbose: bool = False, **kwargs: Any) -> IO[str]: |
no outgoing calls