clap_args : Lightweight Clap Wrapper for Automatic Version & Help Handling
A simplified wrapper around clap that streamlines command-line argument parsing by automatically handling version and help flags.
Table of Contents
Features
- Automatic Versioning: Reads version directly from
Cargo.toml. - Detailed Info: Provides platform and target information via
--vv. - Built-in Help: Automatically handles
-hand--helpflags. - Macro Support: The
parse!macro simplifies initialization.
Usage
Add to Cargo.toml:
[]
= { = "*", = ["macro"] }
Example
use ;
Design Philosophy
The core design goal is to reduce boilerplate for common CLI tasks.
Call Flow:
- Macro Invocation:
parse!is called with a closure. - Setup: The
parsefunction initializes aclap::Commandwith default flags (-v,--vv,-h). - User Configuration: The user-provided closure configures additional arguments.
- Execution:
clapparses the arguments. - Handling:
- If version or help flags are present, they are handled immediately, and
Noneis returned. - Otherwise,
Some(ArgMatches)is returned for the user to process.
- If version or help flags are present, they are handled immediately, and
Tech Stack
- Rust: Core language.
- Clap: Underlying argument parser.
- const_str: Compile-time string manipulation.
- current_platform: Platform information retrieval.
Directory Structure
.
├── Cargo.toml # Project configuration
├── examples/ # Usage examples
├── readme/ # Documentation
├── src/ # Source code
│ └── lib.rs # Main library file
└── test.sh # Test script
API Reference
parse! Macro
Initializes the parser with the current package name and version.
parse!
parse Function
The underlying function called by the macro.
Exports
arg!: Re-exported fromclapfor defining arguments.ArgAction: Re-exported fromclapfor defining argument actions.
History
The concept of command-line arguments dates back to the early days of Unix in the 1970s. The argv (argument vector) convention allowed programs to receive input dynamically at runtime, a significant leap from hardcoded parameters. Over decades, parsing libraries evolved from simple loop-based checks to sophisticated frameworks like clap in Rust, which offer type safety, auto-generated help, and subcommands, reflecting the growing complexity and capability of modern CLI tools.
About
This project is an open-source component of js0.site ⋅ Refactoring the Internet Plan.
We are redefining the development paradigm of the Internet in a componentized way. Welcome to follow us:
clap_args : Clap 轻量封装,自动处理版本与帮助
clap 的简化封装,通过自动处理版本和帮助参数,简化命令行参数解析流程。
目录
特性
- 自动版本管理: 直接读取
Cargo.toml中的版本号。 - 详细信息: 通过
--vv提供平台和目标信息。 - 内置帮助: 自动处理
-h和--help参数。 - 宏支持:
parse!宏简化初始化过程。
使用
添加到 Cargo.toml:
[]
= { = "*", = ["macro"] }
示例
use ;
设计思路
核心设计目标是减少通用 CLI 任务的样板代码。
调用流程:
- 宏调用: 用户调用
parse!并传入闭包。 - 初始化:
parse函数初始化clap::Command,配置默认参数(-v,--vv,-h)。 - 用户配置: 执行用户闭包,配置额外参数。
- 执行:
clap解析参数。 - 处理:
- 若存在版本或帮助参数,立即处理并返回
None。 - 否则,返回
Some(ArgMatches)供用户处理。
- 若存在版本或帮助参数,立即处理并返回
技术堆栈
- Rust: 核心语言。
- Clap: 底层参数解析器。
- const_str: 编译时字符串处理。
- current_platform: 获取平台信息。
目录结构
.
├── Cargo.toml # 项目配置
├── examples/ # 使用示例
├── readme/ # 文档
├── src/ # 源代码
│ └── lib.rs # 主库文件
└── test.sh # 测试脚本
API 参考
parse! 宏
使用当前包名和版本初始化解析器。
parse!
parse 函数
宏调用的底层函数。
导出
arg!: 从clap重新导出,用于定义参数。ArgAction: 从clap重新导出,用于定义参数动作。
历史
命令行参数的概念可以追溯到 20 世纪 70 年代 Unix 的早期。argv(参数向量)约定允许程序在运行时动态接收输入,这是相对于硬编码参数的重大飞跃。几十年来,解析库从简单的循环检查演变为像 Rust 中的 clap 这样复杂的框架,提供类型安全、自动生成帮助和子命令支持,反映了现代 CLI 工具日益增长的复杂性和能力。
关于
本项目为 js0.site ⋅ 重构互联网计划 的开源组件。
我们正在以组件化的方式重新定义互联网的开发范式,欢迎关注: