docs: 更新全部 markdown — CLI 子命令语法 + 新功能

- README: 所有 CLI 示例改为 qrgen encode/decode 子命令
- CHANGELOG: 新增 0.3.0 CLI 重构条目(子命令/stdin/退出码/进度条)
- CLAUDE.md: 更新 CLI 构建命令 + 架构描述
- CLI_USAGE.md: 完全重写完整参数列表 + stdin/补全/退出码章节
This commit is contained in:
2026-06-20 17:52:21 +08:00
parent e6a7efc760
commit 8298cd4c9c
4 changed files with 111 additions and 75 deletions
+86 -64
View File
@@ -6,16 +6,16 @@
```bash
# 终端预览 QR 码
qrgen "Hello World"
qrgen encode "Hello World"
# 生成 PNG
qrgen "https://example.com" -o qr.png
qrgen encode "https://example.com" -o qr.png
# 生成 SVG
qrgen "重要数据" -o qr.svg -l H
qrgen encode "重要数据" -o qr.svg -l H
# 解码 QR 图片
qrgen --decode qr.png
qrgen decode qr.png
```
---
@@ -25,7 +25,8 @@ qrgen --decode qr.png
### 语法
```bash
qrgen [内容] [选项]
qrgen encode [OPTIONS] [CONTENT]
qrgen decode [FILE]
```
### 选项
@@ -47,25 +48,25 @@ qrgen [内容] [选项]
```bash
# 基础生成
qrgen "Hello World" -o hello.png
qrgen encode "Hello World" -o hello.png
# 高纠错 + 大尺寸
qrgen "重要合同编号: ABC-12345678" -o contract.png -l H -s 8 -m 6
qrgen encode "重要合同编号: ABC-12345678" -o contract.png -l H -s 8 -m 6
# 彩色 QR 码
qrgen "My Brand" -o brand.png --fg "#FF5733" --bg "#FFF8E7"
qrgen encode "My Brand" -o brand.png --fg "#FF5733" --bg "#FFF8E7"
# 带 Logo
qrgen "https://mycompany.com" -o logo.png -l H --logo avatar.png
qrgen encode "https://mycompany.com" -o logo.png -l H --logo avatar.png
# JPEG 输出
qrgen "JPEG test" -o qr.jpg -f jpeg
qrgen encode "JPEG test" -o qr.jpg -f jpeg
# WebP 输出
qrgen "WebP test" -o qr.webp -f webp
qrgen encode "WebP test" -o qr.webp -f webp
# 指定版本(强制版本 5
qrgen "Fixed version" -o fixed.png -v 5
qrgen encode "Fixed version" -o fixed.png -v 5
```
---
@@ -77,31 +78,31 @@ qrgen "Fixed version" -o fixed.png -v 5
### 文本模式(默认)
```bash
qrgen "任意文本内容" -o text.png
qrgen encode "任意文本内容" -o text.png
```
等同于:
```bash
qrgen --mode text "任意文本内容" -o text.png
qrgen encode --mode text "任意文本内容" -o text.png
```
### URL 模式
```bash
qrgen --mode url --url "https://github.com/LHY0125/QRGen" -o url.png
qrgen encode --mode url --url "https://github.com/LHY0125/QRGen" -o url.png
```
### WiFi 模式
```bash
# 基础 WiFi
qrgen --mode wifi --ssid MyWiFi --password pass123 -o wifi.png
qrgen encode --mode wifi --ssid MyWiFi --password pass123 -o wifi.png
# 无密码 WiFi
qrgen --mode wifi --ssid FreeWiFi --encryption nopass -o free-wifi.png
qrgen encode --mode wifi --ssid FreeWiFi --encryption nopass -o free-wifi.png
# 隐藏网络 + WPA2
qrgen --mode wifi --ssid HiddenNet --password secret --encryption WPA2 --hidden -o hidden.png
qrgen encode --mode wifi --ssid HiddenNet --password secret --encryption WPA2 --hidden -o hidden.png
```
生成的 QR 内容格式:`WIFI:T:WPA;S:MyWiFi;P:pass123;;`
@@ -117,14 +118,14 @@ qrgen --mode wifi --ssid HiddenNet --password secret --encryption WPA2 --hidden
```bash
# 基础名片
qrgen --mode vcard \
qrgen encode --mode vcard \
--name "张三" \
--phone "13800138000" \
--email "zhangsan@example.com" \
-o card.png
# 完整名片(10 字段)
qrgen --mode vcard \
qrgen encode --mode vcard \
--name "张三" \
--phone "13800138000" \
--email "zhangsan@example.com" \
@@ -154,7 +155,7 @@ qrgen --mode vcard \
### Email 模式
```bash
qrgen --mode email \
qrgen encode --mode email \
--to "hello@example.com" \
--subject "合作洽谈" \
--body "您好,我对贵公司的产品很感兴趣。" \
@@ -166,7 +167,7 @@ qrgen --mode email \
### 电话模式
```bash
qrgen --mode phone --number "13800138000" -o phone.png
qrgen encode --mode phone --number "13800138000" -o phone.png
```
扫描后直接拨号。
@@ -174,7 +175,7 @@ qrgen --mode phone --number "13800138000" -o phone.png
### 短信模式
```bash
qrgen --mode sms \
qrgen encode --mode sms \
--number "13800138000" \
--message "你好,方便电话吗?" \
-o sms.png
@@ -197,7 +198,7 @@ qrgen --mode sms \
```
```bash
qrgen --batch items.json --output-dir ./qr_output/
qrgen encode --batch items.json --output-dir ./qr_output/
# 输出: qr_output/qr_0001.png, qr_output/qr_0002.png, ...
```
@@ -211,7 +212,7 @@ content,level
```
```bash
qrgen --batch items.csv --output-dir ./qr_output/ -s 8
qrgen encode --batch items.csv --output-dir ./qr_output/ -s 8
```
### 批量 WiFi 名片
@@ -235,7 +236,7 @@ JSON 中可以用模式专用字段:
从图片文件解码 QR 码内容。
```bash
qrgen --decode qr.png
qrgen decode qr.png
qrgen -d qr.jpg
```
@@ -284,62 +285,83 @@ qrgen -d qr.jpg
## 完整参数列表
```
Usage: qrgen [OPTIONS] [CONTENT]
qrgen --decode <FILE>
Usage: qrgen <COMMAND>
基础选项:
Commands:
encode 编码:文本 → QR 码
decode 解码:QR 码图片 → 文本
通用选项:
--generate-completions <SHELL> 生成 Shell 补全脚本 (bash/zsh/fish/powershell/elvish)
-h, --help 显示帮助
-V, --version 显示版本
编码子命令 — qrgen encode [OPTIONS] [CONTENT]
-o, --output <FILE> 输出文件 (.png/.bmp/.jpg/.webp/.svg)
-l, --level <L/M/Q/H> 纠错级别 [default: M]
-v, --version <1-40> 手动指定版本 [default: auto]
-V, --version <1-40> 手动指定版本 [default: auto]
-s, --size <PIXELS> 模块像素大小 [default: 4]
-m, --margin <MODULES> 白边模块数 [default: 4]
-f, --format <FORMAT> 图像格式: png/bmp/jpeg/webp [default: 由扩展名推断]
-f, --format <FORMAT> 图像格式: png/bmp/jpeg/webp [default: png]
--fg <#RRGGBB> 前景色 [default: #000]
--bg <#RRGGBB> 背景色 [default: #FFF]
--logo <FILE> Logo 图片文件
--invert 终端反色
模式选项:
--mode <MODE> 编码模式: text/url/wifi/vcard/email/phone/sms/batch
WiFi 选项:
--ssid <NAME> WiFi 名称
--password <PWD> WiFi 密码
--encryption <TYPE> 加密方式: WPA/WPA2/WEP/nopass [default: WPA]
--hidden 隐藏网络
vCard 选项:
--name <NAME> 姓名
--phone <NUMBER> 电话
--email <ADDR> 邮箱
--company <NAME> 公司
--title <TITLE> 职位
--address <ADDR> 地址
--vcard-url <URL> 个人网址
--birthday <DATE> 生日 (YYYY-MM-DD)
--note <TEXT> 备注
--photo <URL> 照片 URL
Email 选项:
--to <ADDR> 收件人
--subject <TEXT> 主题
--body <TEXT> 正文
电话/短信选项:
--number <NUMBER> 电话号码
--message <TEXT> 短信内容
URL 选项:
--name <NAME> 姓名 (vCard)
--phone <NUMBER> 电话 (vCard)
--email <ADDR> 邮箱 (vCard)
--company <NAME> 公司 (vCard)
--title <TITLE> 职位 (vCard)
--address <ADDR> 地址 (vCard)
--vcard-url <URL> 个人网址 (vCard)
--birthday <DATE> 生日 YYYY-MM-DD (vCard)
--note <TEXT> 备注 (vCard)
--photo <URL> 照片 URL (vCard)
--to <ADDR> 收件人 (Email)
--subject <TEXT> 主题 (Email)
--body <TEXT> 正文 (Email)
--number <NUMBER> 电话号码 (Phone/SMS)
--message <TEXT> 短信内容 (SMS)
--url <URL> URL 链接
批量选项:
--batch <FILE> 批量输入文件 (JSON/CSV)
--output-dir <DIR> 批量输出目录
解码选项:
-d, --decode <FILE> 解码 QR 图片
解码子命令 — qrgen decode [FILE]
[FILE] 图片文件路径(传 - 从 stdin 读取)
```
### stdin 管道
```bash
# 编码:从管道读入
echo "Hello" | qrgen encode - -o qr.png
cat long_text.txt | qrgen encode - -o qr.png
# 解码:从管道读入
curl -s https://api.example.com/qr.png | qrgen decode -
```
### Shell 补全
```bash
# 生成补全脚本
qrgen --generate-completions bash > /usr/share/bash-completion/completions/qrgen
qrgen --generate-completions zsh > /usr/share/zsh/site-functions/_qrgen
qrgen --generate-completions fish > ~/.config/fish/completions/qrgen.fish
```
### 退出码
| 码 | 含义 |
|----|------|
| 0 | 成功 |
| 1 | 输入错误(内容为空、模式不匹配、解码失败) |
| 2 | 系统错误(文件不存在、IO 错误) |
---
## 常见问题
@@ -356,7 +378,7 @@ URL 选项:
降低纠错级别(L 级容量最大),或让系统自动选择版本:
```bash
qrgen "很长的文本..." -o big.png -l L
qrgen encode "很长的文本..." -o big.png -l L
```
### Q: Logo 叠加后扫不出来?