[U] Wrap into uv tool.

This commit is contained in:
2026-03-20 20:19:33 +08:00
parent db20b739cd
commit ca9e32763e
14 changed files with 844 additions and 433 deletions

185
docs/uv-tool.md Normal file
View File

@@ -0,0 +1,185 @@
# Config-Man 的 UV Tool 用法
## 适用场景
`config-man` 已经通过 `pyproject.toml` 暴露了 CLI 入口,因此可以直接作为 `uv tool` 使用。
- 临时从源码运行,适合验证命令是否可用:`uv tool run --from . config-man ...`
- 安装为本地长期命令,适合需要持久配置的日常使用:`uv tool install --from . config-man`
- 发布到包索引后,可直接安装:`uv tool install config-man`
## 前置条件
使用本工具前,需要准备以下环境:
- Python 3.9+
- `uv`
- `rclone`
- 可选的 Cloudflare 凭证,用于自动刷新 CDN 缓存
安装 `rclone` 后,请先确认它在系统 `PATH` 中可用:
```bash
rclone version
```
如果命令无法执行,`config-man` 的非 `--mock` 模式也无法正常工作。
## 从源码运行
在仓库根目录执行:
```bash
uv tool run --from . config-man --help
uv tool run --from . config-man show-config
uv tool run --from . config-man view --version 0.30 --mock
```
这种方式适合:
- 快速验证 CLI 是否能启动
- 本地开发时试跑单个命令
- 不需要保留用户级配置的临时操作
## 本地安装为工具
如果你会反复使用 `config-man`,更推荐安装为本地工具:
```bash
uv tool install --from . config-man
config-man --help
config-man show-config
```
常见维护命令:
```bash
uv tool upgrade config-man
uv tool uninstall config-man
```
安装后更适合使用以下会写入本地配置的命令:
```bash
config-man set-config --key storage.path --value ab
config-man set-config --key storage.rclone_remote --value remote
config-man setup-cloudflare --api-token <token> --zone-id <zone_id>
```
## 配置来源优先级
运行时配置优先级如下:
1. 命令行参数
2. 环境变量
3. 用户配置文件 `~/.config/config-man/config-man.json`
4. 项目默认配置
默认用户配置文件路径由 `src/config_man/utils/config.py` 定义;执行 `set-config``setup-cloudflare` 后,配置会保存到该文件。
## 常用环境变量
如果你不想把配置写入文件,可以使用环境变量:
```bash
export CONFIG_MAN_STORAGE_PATH=ab
export CONFIG_MAN_STORAGE_RCLONE_REMOTE=remote
export CONFIG_MAN_CDN_BASE_URL=https://cdn.example.com
export CONFIG_MAN_CDN_CLOUDFLARE_API_TOKEN=your_api_token
export CONFIG_MAN_CDN_CLOUDFLARE_ZONE_ID=your_zone_id
```
Windows PowerShell 可使用:
```powershell
$env:CONFIG_MAN_STORAGE_PATH="ab"
$env:CONFIG_MAN_STORAGE_RCLONE_REMOTE="remote"
$env:CONFIG_MAN_CDN_BASE_URL="https://cdn.example.com"
$env:CONFIG_MAN_CDN_CLOUDFLARE_API_TOKEN="your_api_token"
$env:CONFIG_MAN_CDN_CLOUDFLARE_ZONE_ID="your_zone_id"
```
## 命令示例
### 查看配置
```bash
config-man view --version 0.30 --mock
config-man view --version 0.30 --json --mock
```
### 建议更新
```bash
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30 --mock
```
### 强制更新
```bash
config-man force-update --platform ios --target-version 0.29 --update-version 0.30 --mock
```
### 查看当前生效配置
```bash
config-man show-config
```
### 交互式加密原始配置
项目还提供一个附加命令:
```bash
uv tool run --from . config-man-encrypt
```
该命令为交互式脚本,更适合作为辅助工具,而不是主入口。
## 验证建议
建议至少验证以下命令:
```bash
uv tool run --from . config-man --help
uv tool run --from . config-man show-config
uv tool run --from . config-man view --version 0.30 --mock
```
如果你计划长期使用,再验证安装后的行为:
```bash
uv tool install --from . config-man
config-man --help
config-man show-config
```
同时建议手动确认:
- `rclone` 在 tool 环境下可以被正常找到
- Cloudflare 相关配置能够从环境变量或配置文件加载
-`--mock` 模式在目标网络环境中可访问对象存储与 CDN
## 构建与发布
如果目标是让其他人直接执行 `uv tool install config-man`,还需要先把包发布到索引。
本地构建:
```bash
uv build
```
构建完成后可验证产物:
```bash
uv tool run --from dist/*.whl config-man --help
```
发布到索引后,用户即可通过:
```bash
uv tool install config-man
```
如果当前项目的 `project.urls` 仍是占位地址,请在正式发布前补成真实仓库和文档链接。