From 6c165d967df4fdb270c94da50632eeb4caa1b472 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Wed, 13 May 2026 20:00:11 +0800 Subject: Update mingling dependency and remove async runtime --- CHANGELOG.md | 2 +- Cargo.lock | 252 +++-------------------------------------------------------- Cargo.toml | 13 +-- src/cli.rs | 43 +++++----- src/main.rs | 5 +- 5 files changed, 42 insertions(+), 273 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4aa9bae..2cec989 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ None # Features -None +1. Migrated `mingling` version to `0.1.8` # BREAKING CHANGES None diff --git a/Cargo.lock b/Cargo.lock index 3beac18..bbd28ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,65 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "anstream" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "anstyle-parse" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys", -] - [[package]] name = "anyhow" version = "1.0.102" @@ -82,12 +23,6 @@ version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" - [[package]] name = "cfg-if" version = "1.0.4" @@ -103,17 +38,10 @@ dependencies = [ "serde", "serde_yaml", "strip-ansi-escapes", - "thiserror 1.0.69", - "tokio", + "thiserror", "uuid", ] -[[package]] -name = "colorchoice" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" - [[package]] name = "dirs" version = "6.0.0" @@ -135,29 +63,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "env_filter" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "jiff", - "log", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -233,42 +138,12 @@ dependencies = [ "serde_core", ] -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - [[package]] name = "itoa" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" -[[package]] -name = "jiff" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" -dependencies = [ - "jiff-static", - "log", - "portable-atomic", - "portable-atomic-util", - "serde_core", -] - -[[package]] -name = "jiff-static" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "js-sys" version = "0.3.95" @@ -329,34 +204,33 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "mingling" -version = "0.1.5" +version = "0.1.8" dependencies = [ "mingling_core", "mingling_macros", + "serde", "size", ] [[package]] name = "mingling_core" -version = "0.1.4" +version = "0.1.8" dependencies = [ - "env_logger", + "dirs", "just_fmt", "just_template", - "log", "once_cell", "ron", "serde", "serde_json", "serde_yaml", - "thiserror 2.0.18", - "tokio", + "thiserror", "toml", ] [[package]] name = "mingling_macros" -version = "0.1.4" +version = "0.1.8" dependencies = [ "just_fmt", "once_cell", @@ -371,39 +245,12 @@ version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - [[package]] name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "portable-atomic" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" - -[[package]] -name = "portable-atomic-util" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" -dependencies = [ - "portable-atomic", -] - [[package]] name = "prettyplease" version = "0.2.37" @@ -446,38 +293,9 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.17", "libredox", - "thiserror 2.0.18", -] - -[[package]] -name = "regex" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", + "thiserror", ] -[[package]] -name = "regex-automata" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" - [[package]] name = "ron" version = "0.12.1" @@ -601,33 +419,13 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - [[package]] name = "thiserror" version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "thiserror-impl", ] [[package]] @@ -641,28 +439,6 @@ dependencies = [ "syn", ] -[[package]] -name = "tokio" -version = "1.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91135f59b1cbf38c91e73cf3386fca9bb77915c45ce2771460c9d92f0f3d776" -dependencies = [ - "bytes", - "pin-project-lite", - "tokio-macros", -] - -[[package]] -name = "tokio-macros" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "toml" version = "1.1.2+spec-1.1.0" @@ -726,12 +502,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - [[package]] name = "uuid" version = "1.23.1" @@ -872,9 +642,9 @@ dependencies = [ [[package]] name = "winnow" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" [[package]] name = "wit-bindgen" diff --git a/Cargo.toml b/Cargo.toml index f962729..951a0da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "cobill" # chaos_billing +name = "cobill" # chaos_billing version = "0.1.0" edition = "2024" @@ -8,14 +8,17 @@ name = "cobill" path = "src/main.rs" [dependencies] -mingling = { path = "../mingling/mingling", features = ["full", "debug"] } -tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread" ] } +mingling = { path = "../mingling/mingling", features = [ + "parser", + "general_renderer", + "comp", +] } uuid = { version = "1", features = ["v4"] } serde = { version = "1", features = ["derive"] } serde_yaml = "0.9.33" strip-ansi-escapes = "0.2.1" -thiserror = "1.0.69" +thiserror = "2.0.18" dirs = "6" [build-dependencies] -mingling = { path = "../mingling/mingling", features = ["comp"] } +mingling = { path = "../mingling/mingling", features = ["builds", "comp"] } diff --git a/src/cli.rs b/src/cli.rs index 44c1f8f..121921f 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -3,7 +3,6 @@ use std::{fs::create_dir_all, io::ErrorKind, path::PathBuf, process::exit}; use mingling::{ AnyOutput, Groupped, ShellContext, Suggest, SuggestItem, macros::{chain, completion, dispatcher, gen_program, pack, r_println, renderer, suggest}, - marker::NextProcess, parser::Picker, setup::GeneralRendererSetup, }; @@ -18,7 +17,7 @@ use crate::{ string_vec, }; -pub async fn entry() { +pub fn entry() { let mut program = ThisProgram::new(); if program.pick_global_flag(["-v", "--version"]) { @@ -55,7 +54,7 @@ pub async fn entry() { )); // Execute - program.exec().await; + program.exec(); } dispatcher!("clear", ClearAllBillCommand => ClearAllBillEntry); @@ -156,7 +155,7 @@ fn comp_edit(ctx: &ShellContext) -> Suggest { } #[chain] -async fn do_clear_cmd(_prev: ClearAllBillEntry) -> NextProcess { +fn do_clear_cmd(_prev: ClearAllBillEntry) -> NextProcess { op_bills(|b| b.clear_items()); Empty::new(()).to_render() } @@ -164,7 +163,7 @@ async fn do_clear_cmd(_prev: ClearAllBillEntry) -> NextProcess { pack!(ResultCat = String); #[chain] -async fn read_cat_cmd(_prev: CatEntry) -> NextProcess { +fn read_cat_cmd(_prev: CatEntry) -> NextProcess { ResultCat::new(read_bills().table()).to_render() } @@ -176,9 +175,9 @@ fn render_cat_result(prev: ResultCat) { pack!(StateAddBillItem = BillItem); #[chain] -async fn parse_add_cmd(prev: AddBillEntry) -> NextProcess { +fn parse_add_cmd(prev: AddBillEntry) -> NextProcess { let picked = Picker::new(prev.inner) - .pick_or_route::(["--paid", "-p"], PaidRequired::new(()).to_render()) + .pick_or_route::(["--paid", "-p"], PaidRequired::new(()).to_render()) .pick_or_route::>(["--for", "-f"], ForMembersRequired::new(()).to_render()) .pick_or::( ["--reason", "-r", "--message", "-m"], @@ -203,7 +202,7 @@ async fn parse_add_cmd(prev: AddBillEntry) -> NextProcess { } #[chain] -async fn handle_add_bill_item(prev: StateAddBillItem) -> NextProcess { +fn handle_add_bill_item(prev: StateAddBillItem) -> NextProcess { op_bills(|b| { b.add_item(prev.inner); }); @@ -221,17 +220,16 @@ pack!(ErrorDuplicateSplitMembers = ()); pack!(ErrorNegativePaidAmount = ()); #[chain] -async fn parse_ls_cmd(prev: ListAllBillEntry) -> NextProcess { - let optimize = Picker::<()>::new(prev.inner) +fn parse_ls_cmd(prev: ListAllBillEntry) -> NextProcess { + let optimize = Picker::new(prev.inner) .pick::(["-O", "--optimize"]) - .unpack_directly() - .0; + .unpack(); let state = StateListBills { optimize }; AnyOutput::new(state).route_chain() } #[chain] -async fn handle_list_bills(prev: StateListBills) -> NextProcess { +fn handle_list_bills(prev: StateListBills) -> NextProcess { if prev.optimize { let bills = read_bills(); match calculate_from(bills) { @@ -267,17 +265,16 @@ pack!(StateEditBills = String); // Editor name pack!(ErrorEditorNotFound = String); #[chain] -async fn parse_edit_cmd(prev: EditEntry) -> NextProcess { - let editor = Picker::<()>::new(prev.inner) +fn parse_edit_cmd(prev: EditEntry) -> NextProcess { + let editor = Picker::new(prev.inner) .pick_or::(["--editor", "-e"], get_default_editor()) - .unpack_directly() - .0; + .unpack(); let state = StateEditBills::new(editor); AnyOutput::new(state).route_chain() } #[chain] -async fn exec_edit_cmd(prev: StateEditBills) -> NextProcess { +fn exec_edit_cmd(prev: StateEditBills) -> NextProcess { let text = match input_with_editor_cutsom( read_bills().table(), state_edit_file_path(), @@ -383,27 +380,27 @@ dispatcher!("helix", EditWithHelixCommand => EditWithHelixEntry); dispatcher!("nano", EditWithNanoCommand => EditWithNanoEntry); #[chain] -async fn edit_with_vi(_prev: EditWithViEntry) -> NextProcess { +fn edit_with_vi(_prev: EditWithViEntry) -> NextProcess { EditEntry::new(string_vec!["-e", "vi"]).to_chain() } #[chain] -async fn edit_with_vim(_prev: EditWithVimEntry) -> NextProcess { +fn edit_with_vim(_prev: EditWithVimEntry) -> NextProcess { EditEntry::new(string_vec!["-e", "vim"]).to_chain() } #[chain] -async fn edit_with_nvim(_prev: EditWithNvimEntry) -> NextProcess { +fn edit_with_nvim(_prev: EditWithNvimEntry) -> NextProcess { EditEntry::new(string_vec!["-e", "nvim"]).to_chain() } #[chain] -async fn edit_with_helix(_prev: EditWithHelixEntry) -> NextProcess { +fn edit_with_helix(_prev: EditWithHelixEntry) -> NextProcess { EditEntry::new(string_vec!["-e", "helix"]).to_chain() } #[chain] -async fn edit_with_nano(_prev: EditWithNanoEntry) -> NextProcess { +fn edit_with_nano(_prev: EditWithNanoEntry) -> NextProcess { EditEntry::new(string_vec!["-e", "nano"]).to_chain() } diff --git a/src/main.rs b/src/main.rs index 8a31d09..831063d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,7 +10,6 @@ mod who; #[cfg(test)] mod test; -#[tokio::main] -async fn main() { - cli::entry().await +fn main() { + cli::entry() } -- cgit