Metadata-Version: 2.4
Name: zt-apollo-cli
Version: 0.4.0
Summary: Apollo configuration management CLI
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: playwright>=1.40.0
Requires-Dist: requests>=2.31.0
Requires-Dist: click>=8.1.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: build>=1.4.4
Requires-Dist: twine>=6.2.0

# zt-apollo-cli

Apollo 配置管理命令行工具

## 环境要求

- Python `>=3.10`
- 可用浏览器（首次登录会自动打开）

## 安装

### 开发安装（源码）

```bash
pip install -e .
```

### 打包发布

```bash
uv build
uv publish --token <your_token>
```

## 快速开始

### 1) 登录并缓存 Cookie

首次或需要刷新登录态时执行，会打开浏览器完成登录并缓存 Cookie 到本地。  
其他命令遇到认证失效时会自动重新登录。

```bash
zt-apollo-cli login
```

### 2) 查看部门列表

```bash
zt-apollo-cli sys list-org
```

### 3) 搜索应用

```bash
zt-apollo-cli app search -q bsc
```

### 4) 查看应用基本信息

```bash
zt-apollo-cli app show -a your_app_id
```

### 5) 查看应用管理员列表

```bash
zt-apollo-cli app list-admin -a your_app_id
```

### 6) 添加/移除应用管理员

```bash
zt-apollo-cli app add-admin -a your_app_id -u xxx
zt-apollo-cli app del-admin -a your_app_id -u xxx
```

### 7) 查询应用 Namespace

```bash
zt-apollo-cli app list-namespace -a your_app_id --env DEV --cluster default
```

### 8) 获取 Namespace 当前生效发布

```bash
zt-apollo-cli app show-namespace-release -a your_app_id -n application --env DEV --cluster default
```

### 9) 分配 Namespace 发布权限

```bash
zt-apollo-cli app add-namespace-publisher -a your_app_id -n application -u zt19262
zt-apollo-cli app del-namespace-publisher -a your_app_id -n application -u zt19262
zt-apollo-cli app add-namespace-release-publisher -a your_app_id -n application -u zt19262
zt-apollo-cli app del-namespace-release-publisher -a your_app_id -n application -u zt19262
```

### 10) 修改应用配置

```bash
zt-apollo-cli app update -a your_app_id --file ./app-update.json
```

### 11) 修改 Namespace 配置

适用于 yml/json 等文本类 Namespace。`namespaceId` 与 `format` 默认从 `list-namespace` 自动解析。

```bash
# 从文件更新
zt-apollo-cli app update-namespace -a your_app_id -n application.yml --file ./application.yml --env DEV --cluster default

# 直接传入配置文本
zt-apollo-cli app update-namespace -a your_app_id -n application.yml --text "# config"
```

### 12) 发布 Namespace 配置

将未发布的 Namespace 变更发布到指定环境。`--title` 未指定时自动生成（如 `20260613144414-release`）。

```bash
zt-apollo-cli app release-namespace -a your_app_id -n application.yml --env DEV --cluster default --comment "发布说明"

# 指定发布标题
zt-apollo-cli app release-namespace -a your_app_id -n application.yml --title "20260613144414-release" --comment "s"
```

### 13) 创建 Namespace

在应用下新建 Namespace。默认追加 appId 前缀（`appendNamespacePrefix=true`）。

```bash
zt-apollo-cli app create-namespace -a your_app_id -n test --format properties --comment ""

# 不追加前缀
zt-apollo-cli app create-namespace -a your_app_id -n application.yml --format yml --no-append-prefix
```

### 14) 删除 Namespace（指定环境）

删除指定 env/cluster 下的 Namespace。

```bash
zt-apollo-cli app delete-namespace -a your_app_id -n test --env DEV --cluster default
```

### 15) 删除应用 Namespace（所有环境）

删除应用下的 Namespace 定义及所有环境的配置。

```bash
zt-apollo-cli app delete-app-namespace -a your_app_id -n test
```

## 全局参数
- `-o, --output`：输出格式，支持：
  - `json`（默认）
  - `human`（表格）

示例：

```bash
zt-apollo-cli -o human sys list-org
```

## 配置说明

默认配置目录：`~/.zt-apollo-cli`

- Cookie 缓存：`~/.zt-apollo-cli/cookies.json`
- 配置文件：`~/.zt-apollo-cli/config.yaml`

可选配置项示例：

```yaml
browser_channel: chromium
```

## 环境变量（可选）

支持通过环境变量自动填充登录页账号密码（如 SSO 页面字段可用）：

- `ZT_SSO_USERNAME`
- `ZT_SSO_PASSWORD`

未设置时可在浏览器中手动完成登录。
