|
3 | 3 | import os
|
4 | 4 | import pprint
|
5 | 5 | import subprocess
|
6 |
| -from typing import Callable, Iterable, Optional |
| 6 | +from collections.abc import Iterable |
| 7 | +from typing import Callable, Optional |
7 | 8 |
|
8 | 9 | from ._version import __version__
|
9 | 10 |
|
@@ -179,15 +180,46 @@ def run_container_operation(
|
179 | 180 | )
|
180 | 181 |
|
181 | 182 | if "error" in ret:
|
182 |
| - ret_str = ( |
183 |
| - ret["error"] |
184 |
| - .split("(", maxsplit=1)[1] |
185 |
| - .rsplit(")", maxsplit=1)[0] |
186 |
| - .encode("raw_unicode_escape") |
187 |
| - .decode("unicode_escape") |
188 |
| - ) |
| 183 | + if ( |
| 184 | + "(" in ret["error"] |
| 185 | + and ")" in ret["error"] |
| 186 | + and len(ret["error"].split("(", maxsplit=1)) > 1 |
| 187 | + ): |
| 188 | + ret_str = ( |
| 189 | + ret["error"] |
| 190 | + .split("(", maxsplit=1)[1] |
| 191 | + .rsplit(")", maxsplit=1)[0] |
| 192 | + .encode("raw_unicode_escape") |
| 193 | + .decode("unicode_escape") |
| 194 | + ) |
| 195 | + ename = ( |
| 196 | + ret["error"] |
| 197 | + .split("(")[0] |
| 198 | + .strip() |
| 199 | + .encode("raw_unicode_escape") |
| 200 | + .decode("unicode_escape") |
| 201 | + ) |
| 202 | + elif ":" in ret["error"] and len(ret["error"].split(":", maxsplit=1)) > 1: |
| 203 | + ret_str = ( |
| 204 | + ret["error"] |
| 205 | + .split(":", maxsplit=1)[1] |
| 206 | + .strip() |
| 207 | + .encode("raw_unicode_escape") |
| 208 | + .decode("unicode_escape") |
| 209 | + ) |
| 210 | + ename = ( |
| 211 | + ret["error"] |
| 212 | + .split(":")[0] |
| 213 | + .strip() |
| 214 | + .encode("raw_unicode_escape") |
| 215 | + .decode("unicode_escape") |
| 216 | + ) |
| 217 | + else: |
| 218 | + ret_str = ret["error"] |
| 219 | + ename = "<could not be parsed" |
| 220 | + |
189 | 221 | raise ContainerRuntimeError(
|
190 |
| - error=f"Error running '{' '.join(args)}' in container - error {ret['error'].split('(')[0]} raised:\n{ret_str}", |
| 222 | + error=f"Error running '{' '.join(args)}' in container - error {ename} raised:\n{ret_str}", |
191 | 223 | args=args,
|
192 | 224 | cmd=pprint.pformat(cmd),
|
193 | 225 | returncode=res.returncode,
|
|
0 commit comments