拆分代码;约束cli命令

This commit is contained in:
2026-06-02 14:54:08 +08:00
parent 9b8a517092
commit 40e699e173
17 changed files with 395 additions and 267 deletions
+31 -20
View File
@@ -1,57 +1,68 @@
# TJWater CLI
独立于服务端主代码的 Python CLI 文件夹,放在 `TJWaterServerBinary/cli/` 下,供 agent 服务器**直接调用并通过 stdout/stderr 参与管道**
独立于服务端主代码的 Python CLI 文件夹,放在 `TJWaterServerBinary/cli/` 下,供 agent 服务器使用**编译后的可执行文件**直接调用并通过 stdout/stderr 参与管道。
## 直接使用
## 构建可执行产物
```bash
cd TJWaterServerBinary/cli
./tjwater help --json
python -m pip install -r requirements.txt
python -m pip install -r requirements-build.txt
chmod +x build.sh
./build.sh
```
这个入口文件可以直接参与管道
构建完成后,直接使用编译产物
```bash
./tjwater help --json | jq
./dist/tjwater-cli/tjwater-cli help
```
它会优先使用
1. `cli/.venv/bin/python`
2. 环境变量 `PYTHON`
3. 当前环境里的 `python`
4. 最后回退到 `python3`
如果需要,也可以显式走 Python:
这个可执行文件可以直接参与管道
```bash
python -m tjwater_agent_cli help --json
./dist/tjwater-cli/tjwater-cli help | jq
```
当前采用 `PyInstaller onedir` 方式输出到 `dist/tjwater-cli/`,避免 onefile 在部分 agent/server 环境下依赖临时目录解包执行的问题。
如果需要在开发时直接走源码入口,也可以显式使用 Python:
```bash
python -m tjwater_cli help
```
## 部署到 agent 服务器
最简单的方式是把整个 `TJWaterServerBinary/cli/` 文件夹同步到 agent 服务器,然后直接执行:
最简单的方式是把 `dist/tjwater-cli/` 整个目录同步到 agent 服务器,然后直接执行:
```bash
./tjwater-cli/tjwater-cli help
```
如果希望打包传输:
```bash
cd TJWaterServerBinary/cli
./tjwater help --json
tar -C dist -czf tjwater-cli-linux-amd64.tar.gz tjwater-cli
```
如果希望放到 PATH 中:
```bash
chmod +x tjwater
ln -s /path/to/TJWaterServerBinary/cli/tjwater /usr/local/bin/tjwater
tjwater help --json
ln -s /path/to/TJWaterServerBinary/cli/dist/tjwater-cli/tjwater-cli /usr/local/bin/tjwater-cli
tjwater-cli help | jq
```
## Python 依赖
## 运行与构建依赖
```bash
cd TJWaterServerBinary/cli
python -m pip install -r requirements.txt
python -m pip install -r requirements-build.txt
```
只保留运行 CLI 必需依赖,不再包含安装包构建相关内容
`requirements.txt` 仅包含运行 CLI 的依赖;`requirements-build.txt` 仅包含生成可执行文件所需的构建依赖
## 认证上下文