diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-06-07 15:18:24 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-06-07 15:18:24 +0800 |
| commit | 8aa276beb88086b866be8a446289106be237348a (patch) | |
| tree | e9081d7b417fee79e59d55bde75ef5de71646121 /mling/src/lib.rs | |
| parent | 81b348ade98ec12516d0e43e2dc930e1cb3a27a5 (diff) | |
Add hformat_cargo, hprintln_cargo macros and help rendering
Diffstat (limited to 'mling/src/lib.rs')
| -rw-r--r-- | mling/src/lib.rs | 43 |
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!(); |
