186 lines
4.3 KiB
Markdown
186 lines
4.3 KiB
Markdown
# 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` 仍是占位地址,请在正式发布前补成真实仓库和文档链接。
|