用途\n\ndomain-cli 属于 Rust 技能体系中的“Layer 3:领域约束”层,用于在构建命令行工具(CLI)时提供领域层面的规则与设计指导。资料中列出的关键词包括 CLI、command line、terminal、clap、structopt、argument parsing、subcommand、interactive、TUI、ratatui、crossterm 等,说明它覆盖从参数解析到终端界面的一类命令行开发场景。\n\n主要能力\n\n该技能将领域规则映射为设计约束,再映射为 Rust 实现方式:用户工效对应清晰帮助与错误信息,使用 clap 的 derive 宏;配置优先级对应 CLI > env > file 的分层配置加载;退出码对应出错时返回非零值,使用恰当的 Result 处理;标准输出与错误输出对应数据与错误分离,错误使用 eprintln!;可中断性对应处理 Ctrl+C,使用信号处理。\n\n关键约束\n\n用户沟通规则要求错误写入 stderr、数据写入 stdout,理由是保证输出可管道化、可脚本化,Rust 实现为错误用 eprintln!、数据用 println!。配置优先级规则为 CLI 参数 > 环境变量 > 配置文件 > 默认值,理由是符合用户预期并支持覆盖,Rust 实现为 clap + figment/config 的分层配置。退出码规则要求任何错误都返回非零值,理由是便于脚本集成与自动化,Rust 实现为 main() -> Result<(), Error> 或显式 exit()。\n\n从约束到设计的推导\n\n资料给出示例推导链:需要参数解析时,经由 m05-type-driven 为参数派生结构体,再用 clap 的 #[derive(Parser)];需要配置分层时,经由 m09-domain 将配置视为领域对象,再用 figment/config 做分层来源;需要进度显示时,经由 m12-lifecycle 将进度条视为 RAII,再用 indicatif 的 ProgressBar。\n\n关键 crate\n\n资料列出的用途与对应 crate 为:参数解析使用 clap;交互式提示使用 dialoguer;进度条使用 indicatif;彩色输出使用 colored;终端 UI 使用 ratatui;终端控制使用 crossterm;控制台工具使用 console。\n\n设计模式\n\n资料列出的模式与实现为:Args 结构体用于类型安全参数,使用 #[derive(Parser)];Subcommands 用于命令层级,使用 #[derive(Subcommand)];Config layers 用于覆盖优先级,遵循 CLI > env > file;Progress 用于用户反馈,使用 ProgressBar::new(len)。\n\n代码模式\n\ndomain-cli 给出的 CLI 结构代码示例使用 clap 的 Parser 与 Subcommand,定义 myapp 顶层结构体,包含 verbose 布尔参数与 command 子命令;Commands 枚举包含 Init { name: String } 与 Run { port: Option<u16> };main 返回 anyhow::Result<()>,解析 Cli 后按子命令分发到 init_project 或 run_server,run 在未提供端口时使用 8080。\n\n常见错误\n\n资料列出的错误与修复为:错误写入 stdout 会破坏管道,应使用 eprintln!;没有帮助文本导致体验差,应使用 #[arg(help = "...")];出错时 panic 会导致退出码不正确,应使用 Result 与恰当处理;长时间操作没有进度会让用户不确定,应使用 indicatif。\n\n回溯到 Layer 1\n\n资料给出的映射为:类型安全参数对应 derive 宏,底层实现为 clap Parser;错误处理对应 Result 传播,底层实现为 anyhow 与退出码;用户反馈对应进度 RAII,底层实现为 indicatif ProgressBar;配置优先级对应建造者模式,底层实现为分层来源。\n\n适用场景与限制\n\n该技能适用于使用 Rust 开发生成命令行程序的场景,尤其是需要参数解析、子命令、分层配置、进度显示、终端 UI 或交互式提示的工具。限制方面,资料仅提供领域约束、设计模式与代码示例,未提供具体安装命令、版本要求、平台支持或收费信息;这些内容暂未提供。相关技能包括错误处理(m06-error-handling)、类型驱动参数(m05-type-driven)、进度生命周期(m12-lifecycle)与异步 CLI(m07-concurrency)。
domain-cli
编程与开发
更新于 10-15 08:18