|
15 | 15 | from invoke import task |
16 | 16 | from invoke.context import Context |
17 | 17 | from invoke.exceptions import Exit |
| 18 | +from invoke.runners import Result |
18 | 19 |
|
19 | 20 | # --- Typing Preamble ------------------------------------------------------------------ |
20 | 21 |
|
@@ -286,7 +287,9 @@ def get_packages(context: Context) -> dict[str, PackageInfo]: |
286 | 287 |
|
287 | 288 | def make_py_pkg_info(context: Context, pkg_dir: Path) -> PackageInfo: |
288 | 289 | with context.cd(pkg_dir): |
289 | | - proj_metadata = json.loads(context.run("hatch project metadata").stdout) |
| 290 | + proj_metadata = json.loads( |
| 291 | + ensure_result(context, "hatch project metadata").stdout |
| 292 | + ) |
290 | 293 | return PackageInfo( |
291 | 294 | name=proj_metadata["name"], |
292 | 295 | path=pkg_dir, |
@@ -329,7 +332,9 @@ def get_current_tags(context: Context) -> set[str]: |
329 | 332 | line |
330 | 333 | for line in map( |
331 | 334 | str.strip, |
332 | | - context.run("git tag --points-at HEAD", hide=True).stdout.splitlines(), |
| 335 | + ensure_result( |
| 336 | + context, "git tag --points-at HEAD", hide=True |
| 337 | + ).stdout.splitlines(), |
333 | 338 | ) |
334 | 339 | if line |
335 | 340 | } |
@@ -444,3 +449,10 @@ def install_poetry_project(context: Context, path: Path) -> None: |
444 | 449 | ] |
445 | 450 | context.run("pip install -e .") |
446 | 451 | context.run(f"pip install {' '.join(packages_to_install)}") |
| 452 | + |
| 453 | + |
| 454 | +def ensure_result(context: Context, *args: Any, **kwargs: Any) -> Result: |
| 455 | + result = context.run(*args, **kwargs) |
| 456 | + if result is None: |
| 457 | + raise Exit("Command failed") |
| 458 | + return result |
0 commit comments