diff --git a/nixpkgs_review/cli/pr.py b/nixpkgs_review/cli/pr.py index aef9e38b..62491272 100644 --- a/nixpkgs_review/cli/pr.py +++ b/nixpkgs_review/cli/pr.py @@ -78,8 +78,14 @@ def pr_command(args: argparse.Namespace) -> str: warn(f"https://github.com/NixOS/nixpkgs/pull/{pr} failed to build: {e}") assert review is not None + all_succeeded = True for pr, path, attrs in contexts: - review.start_review(attrs, path, pr, args.post_result, args.print_result) + all_succeeded &= review.start_review( + attrs, path, pr, args.post_result, args.print_result + ) + + if args.no_shell: + sys.exit(0 if all_succeeded else 1) if len(contexts) != len(prs): sys.exit(1) diff --git a/nixpkgs_review/review.py b/nixpkgs_review/review.py index 84e72f26..b4fa7b29 100644 --- a/nixpkgs_review/review.py +++ b/nixpkgs_review/review.py @@ -267,7 +267,7 @@ def start_review( pr: int | None = None, post_result: bool | None = False, print_result: bool = False, - ) -> None: + ) -> bool: os.environ.pop("NIXPKGS_CONFIG", None) os.environ["NIXPKGS_REVIEW_ROOT"] = str(path) if pr: @@ -282,9 +282,7 @@ def start_review( if print_result: print(report.markdown(pr)) - if self.no_shell: - sys.exit(0 if report.succeeded() else 1) - else: + if not self.no_shell: nix_shell( report.built_packages(), path, @@ -297,6 +295,8 @@ def start_review( self.sandbox, ) + return report.succeeded() + def review_commit( self, path: Path,