From 95c6b979ca399671eed8bf9c72f53cfe5d46f431 Mon Sep 17 00:00:00 2001 From: Weicao-CatilGrass <1992414357@qq.com> Date: Wed, 13 May 2026 07:28:02 +0800 Subject: Migrate exit code control to resource-based system --- examples/example-exit-code/src/main.rs | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 examples/example-exit-code/src/main.rs (limited to 'examples/example-exit-code/src/main.rs') diff --git a/examples/example-exit-code/src/main.rs b/examples/example-exit-code/src/main.rs new file mode 100644 index 0000000..f138fb3 --- /dev/null +++ b/examples/example-exit-code/src/main.rs @@ -0,0 +1,42 @@ +//! `Mingling` Example - Exit Code +//! +//! This example demonstrates how to modify the program's exit code using `ExitCodeSetup`. +//! By default, the program exits with code 0. This example shows: +//! 1. Using `dispatcher!` to define an error command, +//! 2. Using `chain!` to handle errors and set a custom exit code via `ProgramExitCode`, +//! 3. Using `renderer!` to print an error message. +//! +//! # How to Run +//! ```bash +//! cargo run --manifest-path ./examples/example-exit-code/Cargo.toml -- error +//! ``` + +use mingling::{ + macros::{chain, dispatcher, gen_program, pack, r_println, renderer}, + res::ExitCode, + setup::ExitCodeSetup, + this, +}; + +fn main() { + let mut program = ThisProgram::new(); + program.with_dispatcher(ErrorCommand); + program.with_setup(ExitCodeSetup::::default()); + program.exec(); +} + +dispatcher!("error", ErrorCommand => ErrorEntry); +pack!(ResultError = ()); + +#[chain] +fn handle_error_entry(_prev: ErrorEntry) -> NextProcess { + this::().modify_res(|r: &mut ExitCode| r.exit_code = 1); + return ResultError::default(); +} + +#[renderer] +fn render_error(_prev: ResultError) { + r_println!("Error!"); +} + +gen_program!(); -- cgit