kit.program/argv/Readme.md
2024-02-27 16:54:41 +08:00

95 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# argv
Cli 命令解析工具
- 支持标记、参数、位置参数三种输入。建议用法:标记和参数可以认为带有默认值,位置参数不带有默认值。位置参数又分为<必须>和[可选]两种,<必须>参数需要在[可选]参数前面。
- 支持输出 help
- 支持命令参数转发。即将 --- 之后的命令完全转发给其他命令,兼容其他形式的参数格式。
java 版本https://github.com/CheneyWong/argv.java
## 使用示例
1. 最简使用
```shell
function main() {
// 注册命令
const { CliCmdParser } = require("./index")
const parser = new CliCmdParser("测试程序");
parser.addCmdLine("version", "查看版本");
parser.addCmdLine("help", "查看帮助");
// 解析用户输入命令
let cmd = parser.parse(args);
// 执行命令
if ("help".equals(cmd.getCmd())) {
// 辅助打印命令提示符
System.out.println(parser.help());
} else {
// 其他命令执行需自行实现
System.out.println(cmd);
}
}
```
2. 添加一个待参数的命令
```shell
parser.addCmdLine("config <key> [value]", "查询/设置配置");
```
```
[] 表示可选参数
<> 表示必选参数
```
在程序中获取参数
```shell
String key = line.getParamValue("key");
String value = line.getParamValue("value");
```
获取程序时附带默认值
```shell
String value = line.getParamValue("value", "xxx");
```
3. 增加一个参数标记
```shell
parser.addCmdLine("tcp <--ip> <--port> <--headlen> [--timeout] <filepath>", "tcp 报文发送");
```
```
[] 表示可选参数
<> 表示必选参数
- 表示标记,即无值属性
-- 表示属性
```
- 必选参数必须在可选参数前面
# TODO
- [x] getParamValue 基本类型自动转换
- [ ] 可选参数
# 暂时无法实现
- [x] 参数说明,因为参数中目前不能有空格。
- [x] 参数默认值,因为参数中目前不能有空格。临时方法,在代码中实现。
## 使用
### Maven
```
<dependency>
<groupId>club.fullstack</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>argv</artifactId>
</dependency>
```