diff options
Diffstat (limited to 'mingling_cli/src')
| -rw-r--r-- | mingling_cli/src/add_dispatcher.rs | 38 | ||||
| -rw-r--r-- | mingling_cli/src/main.rs | 16 |
2 files changed, 54 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); +} diff --git a/mingling_cli/src/main.rs b/mingling_cli/src/main.rs new file mode 100644 index 0000000..c4dfe21 --- /dev/null +++ b/mingling_cli/src/main.rs @@ -0,0 +1,16 @@ +use mingling::{macros::gen_program, setup::BasicProgramSetup}; + +mod add_dispatcher; +pub use crate::add_dispatcher::*; + +#[tokio::main] +async fn main() { + let mut program = MinglingCLI::new(); + program.with_setup(BasicProgramSetup); + program.with_dispatcher(AddDispatcherCommand); + + let render_result = program.exec_without_render().await.unwrap(); + println!("{}", render_result); +} + +gen_program!(MinglingCLI); |
