diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-04-06 15:57:29 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-04-06 15:57:29 +0800 |
| commit | 9f8307ad9b0f1ce8301698277d2b8ab169ea5f7f (patch) | |
| tree | 58a6ec26279c91bd795f59fd2043e37c9e4de3eb /mingling_cli/src/add_dispatcher.rs | |
| parent | 505a2330e61f96243ea8ee38539e1c31c19f6dcd (diff) | |
Add CLI program for managing dispatchers
Diffstat (limited to 'mingling_cli/src/add_dispatcher.rs')
| -rw-r--r-- | mingling_cli/src/add_dispatcher.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/mingling_cli/src/add_dispatcher.rs b/mingling_cli/src/add_dispatcher.rs new file mode 100644 index 0000000..c5eaec4 --- /dev/null +++ b/mingling_cli/src/add_dispatcher.rs @@ -0,0 +1,38 @@ +use mingling::{ + AnyOutput, + macros::{chain, dispatcher, pack, r_println, renderer}, + marker::NextProcess, + parser::Picker, +}; + +use crate::MinglingCLI; + +dispatcher!(MinglingCLI, "add.dispatcher", AddDispatcherCommand => AddDispatcherEntry); + +#[chain(MinglingCLI)] +pub async fn parse_add_dispatcher(args: AddDispatcherEntry) -> NextProcess { + let picker: Picker<MinglingCLI> = Picker::new(args.inner); + let dispatcher_name = picker.pick::<String>(()).unpack_directly().0; + let input = AddDispatcherInput::new(dispatcher_name); + input.into() +} + +pack!(MinglingCLI, AddDispatcherInput = String); + +#[chain(MinglingCLI)] +pub async fn exec_add_dispatcher(_input: AddDispatcherInput) -> NextProcess { + AnyOutput::new(AddDispatcherSuccess::new(())).route_chain() +} + +pack!(MinglingCLI, AddDispatcherSuccess = ()); +pack!(MinglingCLI, AddDispatcherFailed = String); + +#[renderer(MinglingCLI)] +pub fn render_add_dispatcher_success(_prev: AddDispatcherSuccess) { + r_println!("Dispatcher added successfully"); +} + +#[renderer(MinglingCLI)] +pub fn render_add_dispatcher_failed(prev: AddDispatcherFailed) { + r_println!("Error: {}", prev.inner); +} |
