diff options
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); +} |
