aboutsummaryrefslogtreecommitdiff
path: root/mingling/src
diff options
context:
space:
mode:
Diffstat (limited to 'mingling/src')
-rw-r--r--mingling/src/example_docs.rs32
-rw-r--r--mingling/src/setups/exit_code.rs11
-rw-r--r--mingling/src/setups/repl_basic.rs11
3 files changed, 33 insertions, 21 deletions
diff --git a/mingling/src/example_docs.rs b/mingling/src/example_docs.rs
index 3171c22..ea8e539 100644
--- a/mingling/src/example_docs.rs
+++ b/mingling/src/example_docs.rs
@@ -175,7 +175,7 @@ pub mod example_argument_parse {}
/// program.with_dispatcher(CMDDownload);
///
/// // Add a hook to display when the download begins
-/// program.with_hook(ProgramHook::empty().on_begin(|| println!("Download begin")));
+/// program.with_hook(ProgramHook::empty().on_begin::<_, ()>(|_| println!("Download begin")));
///
/// // --------- IMPORTANT ---------
/// // The return values of `exec_*()` related functions have been replaced with Futures
@@ -1359,7 +1359,10 @@ pub mod example_help {}
///
/// Source code (./src/main.rs)
/// ```ignore
-/// use mingling::{hook::ProgramHook, prelude::*};
+/// use mingling::{
+/// hook::{ProgramControlUnit, ProgramHook},
+/// prelude::*,
+/// };
///
/// dispatcher!("greet", CMDGreet => EntryGreet);
///
@@ -1369,18 +1372,18 @@ pub mod example_help {}
/// // --------- IMPORTANT ---------
/// program.with_hook(
/// ProgramHook::<ThisProgram>::empty()
-/// .on_begin(|| println!("[DEBUG] Program is begin"))
-/// .on_pre_dispatch(|args| println!("[DEBUG] Pre dispatch: {args:?}"))
-/// .on_post_dispatch(|c: &_| println!("[DEBUG] Post dispatch: {c:?}"))
-/// .on_pre_chain(|c: &_, _| {
-/// println!("[DEBUG] Pre chain: {c}");
+/// .on_begin::<_, ()>(|_| println!("[DEBUG] Program is begin"))
+/// .on_pre_dispatch(|info| println!("[DEBUG] Pre dispatch: {}", info.arguments.join(" ")))
+/// .on_post_dispatch(|info| println!("[DEBUG] Post dispatch: {}", info.entry))
+/// .on_pre_chain(|info| {
+/// println!("[DEBUG] Pre chain: {}", info.input);
/// })
-/// .on_post_chain(|any_output| println!("[DEBUG] Post chain: {}", any_output.member_id))
-/// .on_finish(|| {
+/// .on_post_chain(|info| println!("[DEBUG] Post chain: {}", info.output.member_id))
+/// .on_finish(|_| {
/// println!("[DEBUG] Loop end");
-/// 0 // Override exit code
+/// ProgramControlUnit::OverrideExitCode(0) // Override exit code
/// })
-/// .on_pre_render(|c: &_, _| println!("[DEBUG] Pre render: {c}"))
+/// .on_pre_render(|info| println!("[DEBUG] Pre render: {}", info.input))
/// .on_post_render(|_| println!("[DEBUG] Post render")),
/// );
/// // --------- IMPORTANT ---------
@@ -1854,7 +1857,10 @@ pub mod example_pack_err {}
/// program.stdout_setting.silence_panic = true;
///
/// // Define a hook to output &ProgramPanic when a Panic occurs
-/// program.with_hook(ProgramHook::empty().on_exec_panic(|info| println!("Program panic: {info}")));
+/// program.with_hook(
+/// ProgramHook::empty()
+/// .on_exec_panic::<_, ()>(|info| println!("Program panic: {}", info.panic)),
+/// );
/// // --------- IMPORTANT ---------
///
/// let _ = program.exec();
@@ -1967,7 +1973,7 @@ pub mod example_panic_unwind {}
/// }));
///
/// // Add hooks to handle REPL-related events
-/// program.with_hook(ProgramHook::empty().on_repl_begin(|| {
+/// program.with_hook(ProgramHook::empty().on_repl_begin(|_| {
/// // Print welcome message
/// println!("Welcome!");
/// }));
diff --git a/mingling/src/setups/exit_code.rs b/mingling/src/setups/exit_code.rs
index ed8204c..025ed8a 100644
--- a/mingling/src/setups/exit_code.rs
+++ b/mingling/src/setups/exit_code.rs
@@ -1,6 +1,11 @@
use std::marker::PhantomData;
-use mingling_core::{ProgramCollect, hook::ProgramHook, setup::ProgramSetup, this};
+use mingling_core::{
+ ProgramCollect,
+ hook::{ProgramControlUnit, ProgramHook},
+ setup::ProgramSetup,
+ this,
+};
use crate::res::ResExitCode;
@@ -32,9 +37,9 @@ where
program.with_resource(ResExitCode { exit_code: 0 });
// Insert hook to override exit code before program ends
- program.with_hook(ProgramHook::empty().on_finish(|| {
+ program.with_hook(ProgramHook::empty().on_finish(|_| {
let this = this::<C>().res_or_default::<ResExitCode>();
- this.exit_code
+ ProgramControlUnit::OverrideExitCode(this.exit_code)
}));
}
}
diff --git a/mingling/src/setups/repl_basic.rs b/mingling/src/setups/repl_basic.rs
index 8b9b83f..71a38d2 100644
--- a/mingling/src/setups/repl_basic.rs
+++ b/mingling/src/setups/repl_basic.rs
@@ -9,7 +9,7 @@ where
C: ProgramCollect<Enum = C>,
{
fn setup(self, program: &mut Program<C>) {
- program.with_hook(ProgramHook::empty().on_repl_readline(|| readline().ok()));
+ program.with_hook(ProgramHook::empty().on_repl_readline(|_| readline().ok()));
}
}
@@ -48,7 +48,7 @@ where
print!("{}", PROMPT.get().unwrap());
let _ = std::io::stdout().flush();
}
- program.with_hook(ProgramHook::empty().on_repl_pre_readline(print_prompt));
+ program.with_hook(ProgramHook::empty().on_repl_pre_readline(|_| print_prompt()));
}
BasicREPLPromptSetup::Func(f) => {
static FUNC: std::sync::OnceLock<fn() -> String> = std::sync::OnceLock::new();
@@ -57,7 +57,8 @@ where
print!("{}", FUNC.get().unwrap()());
let _ = std::io::stdout().flush();
}
- program.with_hook(ProgramHook::empty().on_repl_pre_readline(print_func_prompt));
+ program
+ .with_hook(ProgramHook::empty().on_repl_pre_readline(|_| print_func_prompt()));
}
}
}
@@ -71,8 +72,8 @@ where
{
fn setup(self, program: &mut Program<C>) {
program.with_hook(ProgramHook::empty().on_repl_receive_result(|r| {
- if !r.is_empty() {
- println!("{}", r.trim())
+ if !r.result.is_empty() {
+ println!("{}", r.result.trim())
}
}));
}