aboutsummaryrefslogtreecommitdiff
path: root/mling/src/lib.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-07 15:18:24 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-07 15:18:24 +0800
commit8aa276beb88086b866be8a446289106be237348a (patch)
treee9081d7b417fee79e59d55bde75ef5de71646121 /mling/src/lib.rs
parent81b348ade98ec12516d0e43e2dc930e1cb3a27a5 (diff)
Add hformat_cargo, hprintln_cargo macros and help rendering
Diffstat (limited to 'mling/src/lib.rs')
-rw-r--r--mling/src/lib.rs43
1 files changed, 34 insertions, 9 deletions
diff --git a/mling/src/lib.rs b/mling/src/lib.rs
index d4ce697..add20ac 100644
--- a/mling/src/lib.rs
+++ b/mling/src/lib.rs
@@ -1,32 +1,57 @@
#![allow(unused_imports)]
+use colored::Colorize;
use mingling::{
- macros::{gen_program, r_println, renderer},
+ macros::{chain, gen_program, pack, r_println, renderer},
res::ResExitCode,
};
pub mod cli;
+pub use cli::*;
mod cargo_style;
pub use cargo_style::*;
pub mod display;
pub mod res;
+mod pkg_mgr;
+pub use pkg_mgr::*;
+
mod proj_mgr;
-use proj_mgr::*;
+pub use proj_mgr::*;
use crate::display::markdown;
-#[renderer]
-pub fn render_error_dispatch_not_found(err: ErrorDispatcherNotFound, ec: &mut ResExitCode) {
+pack!(ResultMlingHelp = ());
+pack!(ResultUnknownCommand = String);
+
+#[chain]
+fn handle_error_dispatcher_not_found(err: ErrorDispatcherNotFound) -> Next {
if err.is_empty() {
- r_println!("{}", markdown(include_str!("helps/mling_help.txt")));
- ec.exit_code = 0;
+ ResultMlingHelp::default().to_render()
} else {
- let s = eformat_cargo!("Cannot find subcommand \"{}\"", err.join(" "));
- r_println!("{}", s);
- ec.exit_code = 1;
+ ResultUnknownCommand::new(err.join(" ")).to_render()
}
}
+#[renderer]
+fn render_mling_help(_prev: ResultMlingHelp, ec: &mut ResExitCode) {
+ r_println!("{}", markdown(include_str!("helps/mling_help.txt")));
+ ec.exit_code = 0;
+}
+
+#[renderer]
+fn render_unknown_command(prev: ResultUnknownCommand, ec: &mut ResExitCode) {
+ r_println!(
+ "{}",
+ eformat_cargo!("no such command: `{}`", prev.bright_yellow().bold())
+ );
+ r_println!();
+ r_println!(
+ "{}",
+ hformat_cargo!("view all commands with `cargo help mling`")
+ );
+ ec.exit_code = 101;
+}
+
gen_program!();