From 33469c75614c444f512fd51dbc78a31a9a4bec82 Mon Sep 17 00:00:00 2001 From: Weicao-CatilGrass <1992414357@qq.com> Date: Tue, 14 Apr 2026 03:03:21 +0800 Subject: Rename add_dispatcher module to dispatcher_mgr and add remove command --- mingling_cli/src/dispatcher_mgr.rs | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 mingling_cli/src/dispatcher_mgr.rs (limited to 'mingling_cli/src/dispatcher_mgr.rs') diff --git a/mingling_cli/src/dispatcher_mgr.rs b/mingling_cli/src/dispatcher_mgr.rs new file mode 100644 index 0000000..483a48c --- /dev/null +++ b/mingling_cli/src/dispatcher_mgr.rs @@ -0,0 +1,47 @@ +use mingling::{ + AnyOutput, + macros::{chain, dispatcher, pack, r_println, renderer}, + marker::NextProcess, + parser::Picker, +}; + +use crate::ThisProgram; + +dispatcher!("add.dispatcher", AddDispatcherCommand => AddDispatcherEntry); +dispatcher!("remove.dispatcher", RemoveDispatcherCommand => RemoveDispatcherEntry); + +#[chain] +pub async fn parse_add_dispatcher(args: AddDispatcherEntry) -> NextProcess { + let picker: Picker = Picker::new(args.inner); + let dispatcher_name = picker.pick::(()).unpack_directly().0; + let input = AddDispatcherInput::new(dispatcher_name); + input.into() +} + +#[chain] +pub async fn parse_remove_dispatcher(args: RemoveDispatcherEntry) -> NextProcess { + let picker: Picker = Picker::new(args.inner); + let dispatcher_name = picker.pick::(()).unpack_directly().0; + let input = AddDispatcherInput::new(dispatcher_name); + input.into() +} + +pack!(AddDispatcherInput = String); + +#[chain] +pub async fn exec_add_dispatcher(_input: AddDispatcherInput) -> NextProcess { + AnyOutput::new(AddDispatcherSuccess::new(())).route_chain() +} + +pack!(AddDispatcherSuccess = ()); +pack!(AddDispatcherFailed = String); + +#[renderer] +pub fn render_add_dispatcher_success(_prev: AddDispatcherSuccess) { + r_println!("Dispatcher added successfully"); +} + +#[renderer] +pub fn render_add_dispatcher_failed(prev: AddDispatcherFailed) { + r_println!("Error: {}", prev.inner); +} -- cgit