Revert "[U] Wrap into uv tool."

This reverts commit ca9e32763e.
This commit is contained in:
2026-04-15 13:05:45 +08:00
parent ca9e32763e
commit 1bc74cbd1b
14 changed files with 426 additions and 837 deletions

264
README.md
View File

@@ -1,146 +1,212 @@
# Config-Man CLI 工具
Config-Man 是一个面向对象存储配置文件的 Python CLI支持查看配置、建议更新、强制更新以及配套的本地配置管理。项目已经整理为可直接通过 `uv tool` 运行和安装的命令行工具。
## 项目概述
## 快速开始
Config-Man 是一个Python CLI工具用于管理存储在对象存储中的加密静态资源配置文件。该工具支持多版本管理通过Cloudflare CDN进行分发主要用于游戏应用的配置管理。
### 从源码直接运行
### 项目目标
- 简化多版本配置文件的查看和管理
- 支持版本升级策略(建议更新和强制更新)
- 确保配置文件的加密存储和CDN缓存同步
- 提供直观的配置对比功能
在仓库根目录执行:
## 系统架构
```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
### 存储架构
```
对象存储服务器
├── ab/
│ ├── 0_29/
│ │ ├── androidconfig.json (加密)
│ │ └── iosconfig.json (加密)
│ ├── 0_30/
│ │ ├── androidconfig.json (加密)
│ │ └── iosconfig.json (加密)
│ └── 1_00/
│ ├── androidconfig.json (加密)
│ └── iosconfig.json (加密)
```
这种方式适合本地验证和临时使用。
### 技术栈
- **开发语言**: Python 3.13+
- **CLI框架**: Click 或 Typer
- **存储同步**: rclone
- **CDN服务**: Cloudflare
- **文件加密**: AES-256
- **配置格式**: JSON
### 安装为本地工具
## 功能说明
如果需要长期使用,推荐安装:
### 功能1: 查看配置文件
对比显示对象存储和CDN中的配置内容支持Android和iOS平台。
```bash
uv tool install --from . config-man
config-man --help
config-man show-config
config-man view --version <版本号>
```
卸载和升级:
**参数说明**:
- `--version`: 版本号,格式为 0.29, 0.30, 0.31 等
**功能特性**:
- 同时显示Android和iOS平台的配置文件
- 对比对象存储中的内容和CDN中的内容
- 使用表格格式漂亮地展示配置差异
- 支持JSON格式化输出
### 功能2: 建议更新
在目标版本的配置文件中添加 `Ver_New` 属性,提示用户有新版本可用。
```bash
uv tool upgrade config-man
uv tool uninstall config-man
config-man suggest-update --platform <平台> --target-version <目标版本> --update-version <更新版本>
```
## 运行前置条件
**参数说明**:
- `--platform`: 平台类型,支持 android 或 ios
- `--target-version`: 目标版本号,如 0.29
- `--update-version`: 更新版本号,如 0.30
- `--storage-path`: 对象存储路径前缀(覆盖配置文件)
- `--cdn-url`: CDN基础URL覆盖配置文件
- `--mock`: 使用模拟环境进行测试
- Python 3.9+
- `uv`
- `rclone`
- 可选的 Cloudflare 凭证与网络访问能力
**功能特性**:
- 在目标版本配置中添加 `Ver_New` 属性
- `Ver_New` 的值设为更新版本的 `Ver` 属性值
- 自动加密并上传到对象存储
- 自动刷新CDN缓存
`config-man` 的真实存储操作依赖系统中的 `rclone`。如果只是本地验证 CLI可优先使用 `--mock` 模式。
**配置变更示例**:
```json
// 修改前
{
"Ver": "0.29.1abc123",
"EventApiURL": "https://n3backend.azurewebsites.net/",
"PlayFabTitle": "B066F"
}
```bash
rclone version
// 修改后
{
"Ver": "0.29.1abc123",
"Ver_New": "0.30.1def456",
"EventApiURL": "https://n3backend.azurewebsites.net/",
"PlayFabTitle": "B066F"
}
```
## 常用命令
### 查看配置
**使用示例**:
```bash
config-man view --version 0.30 --mock
config-man view --version 0.30 --json --mock
```
# 基本用法
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30
### 建议更新
# 指定存储路径和CDN URL
config-man suggest-update --platform ios --target-version 0.29 --update-version 0.30 --storage-path custom/path --cdn-url https://custom.cdn.com
```bash
# 使用模拟环境测试
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30 --mock
```
### 强制更新
### 功能3: 强制更新
直接更新目标版本的 `Ver` 属性,强制用户升级到新版本。
```bash
config-man force-update --platform ios --target-version 0.29 --update-version 0.30 --mock
config-man force-update --platform <平台> --target-version <目标版本> --update-version <更新版本>
```
### 查看和写入本地配置
**参数说明**:
- `--platform`: 平台类型,支持 android 或 ios
- `--target-version`: 目标版本号,如 0.29
- `--update-version`: 更新版本号,如 0.30
## 配置文件结构
### 配置项说明
```json
{
"EventApiURL": "https://n3backend.azurewebsites.net/",
"Ver": "0.28.2ece920695",
"PlayFabTitle": "B066F",
"Google_Play_URL": "https://play.google.com/store/apps/details?id=com.arkgame.ft",
"APP_Store_URL": "https://apps.apple.com/us/app/id6505145935",
"HeartBeat": "60",
"RTMPid": "80000586",
"RTMServerEndpoint": "rtm-intl-frontgate.ilivedata.com:13321",
"RTMHmacSecret": "57047697437f4f2c97a835e8d9a53358",
"FuncUrl": "https://leaderboardcreate.azurewebsites.net",
"FuncKey": "R5kU45fNBRd52Eqp3tEqfpZqrbFw53uSSEo7wraUSqIfAzFuRmLm_w=="
}
```
### 配置项分类
- **API端点**: EventApiURL, FuncUrl
- **版本信息**: Ver, Ver_New
- **应用商店链接**: Google_Play_URL, APP_Store_URL
- **实时通信**: RTMPid, RTMServerEndpoint, RTMHmacSecret
- **功能配置**: PlayFabTitle, HeartBeat, FuncKey
## 技术要求
### 安全要求
- 配置文件在对象存储中加密存储
- 支持AES-256加密算法
- 加密密钥安全管理
- 操作日志记录
### 性能要求
- 配置文件查看响应时间 < 3秒
- 配置文件修改响应时间 < 5秒
- CDN缓存刷新响应时间 < 10秒
### 兼容性要求
- 支持Python 3.13+
- 支持Windows、macOS、Linux
- 支持rclone命令行工具
## 安装和使用
### 安装依赖
```bash
config-man show-config
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>
pip install -r requirements.txt
```
### 附加命令
项目还提供交互式加密命令:
### 配置环境
```bash
uv tool run --from . config-man-encrypt
# 配置rclone
rclone config
# 配置Cloudflare CDN可选
export CLOUDFLARE_API_TOKEN=your_api_token
export CLOUDFLARE_ZONE_ID=your_zone_id
```
## 配置加载规则
配置优先级如下:
1. 命令行参数
2. 环境变量
3. 用户配置文件 `~/.config/config-man/config-man.json`
4. 项目默认配置
相关环境变量包括:
### 使用示例
```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
# 查看配置
config-man view --version 0.30
# 建议更新自动刷新CDN缓存
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30
# 强制更新
config-man force-update --platform ios --target-version 0.29 --update-version 0.30
```
## 存储结构
### Cloudflare CDN 配置
对象存储中的目标结构大致如下:
Config-Man 支持 Cloudflare CDN 缓存自动刷新。详细设置请参考:[Cloudflare CDN 设置指南](docs/cloudflare_setup.md)
```text
ab/
├── 0_29/
│ ├── androidconfig.json
│ └── iosconfig.json
├── 0_30/
│ ├── androidconfig.json
│ └── iosconfig.json
└── 1_00/
├── androidconfig.json
└── iosconfig.json
```
## 错误处理
版本号会自动从 `0.30` 转换为 `0_30` 这种路径形式。
### 常见错误场景
- 版本号不存在
- 平台类型错误
- 网络连接失败
- 文件加密/解密失败
- CDN刷新失败
## 构建与发布
如果你希望他人可以直接执行 `uv tool install config-man`,需要先构建并发布到包索引。
本地构建:
```bash
uv build
```
构建后的快速验证:
```bash
uv tool run --from dist/*.whl config-man --help
```
## 相关文档
- `docs/uv-tool.md`: 面向 `uv tool` 的安装、配置、验证与发布说明
- `docs/USAGE.md`: `view` 命令和配置方式说明
- `docs/cloudflare_setup.md`: Cloudflare 配置说明
- `PROJECT_STRUCTURE.md`: 项目结构与开发流程
### 错误处理策略
- 提供清晰的错误信息
- 支持重试机制
- 记录详细的操作日志
- 提供回滚功能