aboutsummaryrefslogtreecommitdiff
path: root/mingling_cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_cli/src')
-rw-r--r--mingling_cli/src/dispatcher_mgr.rs (renamed from mingling_cli/src/add_dispatcher.rs)29
-rw-r--r--mingling_cli/src/main.rs14
2 files changed, 26 insertions, 17 deletions
diff --git a/mingling_cli/src/add_dispatcher.rs b/mingling_cli/src/dispatcher_mgr.rs
index c5eaec4..483a48c 100644
--- a/mingling_cli/src/add_dispatcher.rs
+++ b/mingling_cli/src/dispatcher_mgr.rs
@@ -5,34 +5,43 @@ use mingling::{
parser::Picker,
};
-use crate::MinglingCLI;
+use crate::ThisProgram;
-dispatcher!(MinglingCLI, "add.dispatcher", AddDispatcherCommand => AddDispatcherEntry);
+dispatcher!("add.dispatcher", AddDispatcherCommand => AddDispatcherEntry);
+dispatcher!("remove.dispatcher", RemoveDispatcherCommand => RemoveDispatcherEntry);
-#[chain(MinglingCLI)]
+#[chain]
pub async fn parse_add_dispatcher(args: AddDispatcherEntry) -> NextProcess {
- let picker: Picker<MinglingCLI> = Picker::new(args.inner);
+ let picker: Picker<ThisProgram> = 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]
+pub async fn parse_remove_dispatcher(args: RemoveDispatcherEntry) -> NextProcess {
+ let picker: Picker<ThisProgram> = Picker::new(args.inner);
+ let dispatcher_name = picker.pick::<String>(()).unpack_directly().0;
+ let input = AddDispatcherInput::new(dispatcher_name);
+ input.into()
+}
+
+pack!(AddDispatcherInput = String);
-#[chain(MinglingCLI)]
+#[chain]
pub async fn exec_add_dispatcher(_input: AddDispatcherInput) -> NextProcess {
AnyOutput::new(AddDispatcherSuccess::new(())).route_chain()
}
-pack!(MinglingCLI, AddDispatcherSuccess = ());
-pack!(MinglingCLI, AddDispatcherFailed = String);
+pack!(AddDispatcherSuccess = ());
+pack!(AddDispatcherFailed = String);
-#[renderer(MinglingCLI)]
+#[renderer]
pub fn render_add_dispatcher_success(_prev: AddDispatcherSuccess) {
r_println!("Dispatcher added successfully");
}
-#[renderer(MinglingCLI)]
+#[renderer]
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
index c4dfe21..a0066f4 100644
--- a/mingling_cli/src/main.rs
+++ b/mingling_cli/src/main.rs
@@ -1,16 +1,16 @@
use mingling::{macros::gen_program, setup::BasicProgramSetup};
-mod add_dispatcher;
-pub use crate::add_dispatcher::*;
+mod dispatcher_mgr;
+pub use crate::dispatcher_mgr::*;
#[tokio::main]
async fn main() {
- let mut program = MinglingCLI::new();
+ let mut program = ThisProgram::new();
program.with_setup(BasicProgramSetup);
- program.with_dispatcher(AddDispatcherCommand);
+ program.with_dispatcher(CompletionDispatcher);
+ program.with_dispatchers((AddDispatcherCommand, RemoveDispatcherCommand));
- let render_result = program.exec_without_render().await.unwrap();
- println!("{}", render_result);
+ program.exec().await;
}
-gen_program!(MinglingCLI);
+gen_program!();