From 6ce49469abe892e29d8a79e3e089c93b4f475583 Mon Sep 17 00:00:00 2001
From: 魏曹先生 <1992414357@qq.com>
Date: Fri, 29 May 2026 21:45:23 +0800
Subject: Remove duplicate README and replace with symlink
---
dev_tools/src/bin/refresh-docs.rs | 11 ---
mingling/README.md | 165 +-------------------------------------
2 files changed, 1 insertion(+), 175 deletions(-)
mode change 100644 => 120000 mingling/README.md
diff --git a/dev_tools/src/bin/refresh-docs.rs b/dev_tools/src/bin/refresh-docs.rs
index 23619dc..ffa80a2 100644
--- a/dev_tools/src/bin/refresh-docs.rs
+++ b/dev_tools/src/bin/refresh-docs.rs
@@ -10,20 +10,9 @@ const OUTPUT_PATH: &str = "./mingling/src/example_docs.rs";
const TEMPLATE_CONTENT: &str = include_str!("../../../mingling/src/example_docs.rs.tmpl");
fn main() {
- copy_readme();
gen_example_doc_module();
}
-fn copy_readme() {
- let repo_root = find_git_repo().unwrap();
- let src = repo_root.join("README.md");
- let dst = repo_root.join("./mingling/README.md");
- if src.exists() {
- std::fs::copy(&src, &dst).unwrap();
- println_cargo_style!("Copied: copied README.md to mingling/README.md");
- }
-}
-
fn gen_example_doc_module() {
let mut template = Template::from(TEMPLATE_CONTENT);
let repo_root = find_git_repo().unwrap();
diff --git a/mingling/README.md b/mingling/README.md
deleted file mode 100644
index 9ebc3d1..0000000
--- a/mingling/README.md
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-Mìng Lìng - 命令
-
-
- Macro magician in your CLI.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-> [!WARNING]
->
-> **Note**: Mingling is still under active development, and its API may change. Feel free to try it out and give us feedback!
-> **Hint**: This note will be removed in version `0.5.0`
-
-
- 🤔 What is Mingling? 🤔
-
-
-[`Mingling`](https://github.com/catilgrass/mingling) is a **proc-macro and type system-based** Rust CLI framework, suitable for developing complex command-line programs with numerous subcommands.
-
-> **BTW:** Its name comes from the Chinese Pinyin **"Mìng Lìng"**, meaning **"Command"**. 😄
-
-### Mingling's Core Capabilities
-
-1. **Separation of Concerns, Clear Logic**: Mingling decouples logic by responsibility, helping you organize your CLI program more clearly.
-See example: [Example](https://github.com/catilgrass/mingling/blob/main/examples/example-basic/src/main.rs)
-2. **"All Logic is Functions"**: Execution logic, rendering logic, completion logic, help logic — everything is a function. Just attach the corresponding attribute macro to bind them to your program.
-3. **Fully Dynamic Completion System**: With the `comp` feature, you can flexibly implement dynamic completion logic for any subcommand.
-See examples: [Example](https://github.com/catilgrass/mingling/blob/main/examples/example-completion/src/main.rs)
-4. **Lightning-Fast Subcommand Dispatch**: With the `dispatch_tree` feature, Mingling hardens the subcommand structure into a prefix tree at **compile time**, enabling blazing-fast subcommand lookup.
-See examples: [Example](https://github.com/catilgrass/mingling/blob/main/examples/example-dispatch-tree/src/main.rs)
-5. **Lightweight Dependencies, On-Demand Importing**: Minimal core dependencies keep builds fast; enhanced features are imported on demand through fine-grained feature flags.
-6. **Structured Output**: Enabling the `general_renderer` feature adds support for flags like `--json` and `--yaml`, providing structured output capabilities.
-See examples: [Example](https://github.com/catilgrass/mingling/blob/main/examples/example-general-renderer/src/main.rs)
-
-
-### What does Mingling look like?
-
-Here is a basic project written using **Mingling**:
-- When the user types `greet`, the program outputs `Hello, World!`
-- When the user types `greet Alice`, the program outputs `Hello, Alice!`
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("greet", CMDGreet => EntryGreet);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDGreet);
- program.exec_and_exit();
-}
-
-pack!(ResultGreeting = String);
-
-#[chain]
-fn handle_greet(args: EntryGreet) -> Next {
- let greeting = args.pick_or::((), "World").unpack();
- ResultGreeting::new(greeting)
-}
-
-#[renderer]
-fn render_greeting(greeting: ResultGreeting) {
- r_println!("Hello, {}!", *greeting);
-}
-
-gen_program!();
-```
-
-
- 🚀 How to get started? 🚀
-
-
-There are multiple ways to import **Mingling**:
-
-1. From [crates.io](https://crates.io/crates/mingling):
-```toml
-[dependencies.mingling]
-version = "0.1.9"
-features = []
-```
-
-2. From [GitHub](https://github.com/catilgrass/mingling):
-```toml
-[dependencies.mingling]
-git = "https://github.com/catilgrass/mingling"
-branch = "main"
-features = []
-```
-
-3. Alternatively, you can quickly scaffold a new project from the [Mingling-Template](https://github.com/catilgrass/mingling-template) using:
-```bash
-cargo generate --git catilgrass/mingling-template
-```
-
-
- 💡 How to learn? 💡
-
-
-You can read the following docs to learn more about the `Mingling` framework:
-
-- 💡 Check out **[Mingling Helpdoc](https://catilgrass.github.io/mingling/)** to learn the basics.
-- 💡 Check out **[Examples](https://docs.rs/mingling/latest/mingling/_mingling_examples/index.html)** to learn about the core library.
-- 💡 Check out **[docs.rs](https://docs.rs/mingling/latest/mingling/)** to learn how to use the macro system and explore the full API.
-
-
- 🗺️ Roadmap 🗺️
-
-
-- [ ] Milestone.1 "MVP"
- - [x] \[[0.1.4](https://docs.rs/mingling/0.1.4/mingling/)\] \[`core`\] \[`general_renderer`\] **Mingling** can render data into serializable formats via `--json` and `--yaml` flags
- - [x] \[[0.1.5](https://docs.rs/mingling/0.1.5/mingling/)\] \[`core`\] \[`comp`\] **Mingling** can dynamically invoke itself to provide completions for shells like `bash`, `zsh`, `fish`, and `pwsh`
- - [x] \[[0.1.6](https://docs.rs/mingling/0.1.6/mingling/)\] \[`core`\] \[`comp`\] **Mingling** can gather more context for smarter completions
- - [x] \[[0.1.7](https://docs.rs/mingling/0.1.7/mingling/)\] \[`clap`\] Provides a **Clap** compatibility layer, allowing **Mingling** to reuse its powerful parsing capabilities
- - [x] \[[0.1.7](https://docs.rs/mingling/0.1.7/mingling/)\] \[`core`\] **Mingling** can intercept `-h` or `--help` flags to display custom help text for each subcommand
- - [x] \[[0.1.7](https://docs.rs/mingling/0.1.7/mingling/)\] \[`mling`\] Provides a basic scaffolding tool (`mling`) for rapid development and debugging
- - [x] \[[0.1.8](https://docs.rs/mingling/0.1.8/mingling/)\] \[`core`\] \[`dispatch_tree`\] Converts the subcommand list into a prefix tree to improve command matching speed
- - [X] \[[0.1.9](https://docs.rs/mingling/0.1.9/mingling/)\] \[`core`\] \[`dev_toolkits`\] Provides debugging interfaces for developers to capture invocation information when issues arise (`InvokeStackDisplay`) (indirectly implemented via `ProgramHook`)
- - [X] \[[0.1.9](https://docs.rs/mingling/0.1.9/mingling/)\] \[`core`\] \[`repl`\] Provides REPL capability (`program.exec_repl();`)
- - [ ] \[**0.2.0**\] Complete documentation, tests, and examples
-
-- [ ] Milestone.2 "More Comfortable Dev and User Experience"
- - [ ] ...
- - [ ] \[**0.2.5**\] \[`mling`\] Helpdoc Maker
- - [ ] ...
- - [ ] \[**0.2.8**\] \[`picker`\] A more efficient and intelligent argument parser
-
-- [ ] Milestone.3 "Unplanned"
- - [ ] ...
-
-
- 🚫 Unplanned Features 🚫
-
-
-While Mingling has several common CLI features that are **NOT PLANNED** to be directly included in the framework.
-This is because the Rust ecosystem already has excellent and mature crates to handle these issues, and Mingling's design is intended to be used in combination with them.
-
-- **Colored Output**: To add color and styles (bold, italic, etc.) to terminal output, consider using crates like [`colored`](https://crates.io/crates/colored) or [`owo-colors`](https://crates.io/crates/owo-colors). You can integrate their types directly into your renderers.
-- **I18n**: To translate your CLI application, the [`rust-i18n`](https://crates.io/crates/rust-i18n) crate provides a powerful internationalization solution that you can use in your command logic and renderers.
-- **Progress Bars**: To display progress indicators, the [`indicatif`](https://crates.io/crates/indicatif) crate is the standard choice.
-- **TUI**: To build full-screen interactive terminal applications, it is recommended to use a framework like [`ratatui`](https://crates.io/crates/ratatui) (formerly `tui-rs`).
-
-
- 📄 Open Source License 📄
-
-
-This project is licensed under the MIT License.
-
-See [LICENSE-MIT](LICENSE-MIT) or [LICENSE-APACHE](LICENSE-APACHE) file for details.
diff --git a/mingling/README.md b/mingling/README.md
new file mode 120000
index 0000000..32d46ee
--- /dev/null
+++ b/mingling/README.md
@@ -0,0 +1 @@
+../README.md
\ No newline at end of file
--
cgit