aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/program
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-05-09 17:48:03 +0800
committer魏曹先生 <1992414357@qq.com>2026-05-09 17:48:03 +0800
commit99d5a62aa3655f8676021a9bf70af3d12c9457bc (patch)
tree83349003584863fc4b9dbe5471da02fad55b6a74 /mingling_core/src/program
parent842d330308b2abe44978a0acefe8e36a0a98376d (diff)
Capture exit codes from anonymous hook finishes
Diffstat (limited to 'mingling_core/src/program')
-rw-r--r--mingling_core/src/program/hook.rs5
-rw-r--r--mingling_core/src/program/setup/exit_code_control.rs3
2 files changed, 5 insertions, 3 deletions
diff --git a/mingling_core/src/program/hook.rs b/mingling_core/src/program/hook.rs
index edbf996..a5c5d38 100644
--- a/mingling_core/src/program/hook.rs
+++ b/mingling_core/src/program/hook.rs
@@ -215,7 +215,10 @@ where
}
for anonymous_hook in &self.anonymous_hooks {
if let Some(finish) = anonymous_hook.finish {
- finish();
+ exit_code = finish();
+ if exit_code != 0 {
+ return exit_code;
+ }
}
}
exit_code
diff --git a/mingling_core/src/program/setup/exit_code_control.rs b/mingling_core/src/program/setup/exit_code_control.rs
index a4a5a5c..20cd9b2 100644
--- a/mingling_core/src/program/setup/exit_code_control.rs
+++ b/mingling_core/src/program/setup/exit_code_control.rs
@@ -15,8 +15,7 @@ where
C: ProgramCollect<Enum = C>,
{
fn setup(&mut self, program: &mut crate::Program<C>) {
- program
- .with_hook_anonymous(ProgramAnonymousHook::empty().on_finish(current_exit_code));
+ program.with_hook_anonymous(ProgramAnonymousHook::empty().on_finish(current_exit_code));
}
}