# 32r4-cli-demo

`32r4-cli-demo` 是一个用 `Typer` 构建的最小 CLI 示例项目，现在已经补齐了发布和升级所需的基础结构。

## 安装

这个项目面向 `uv tool` 的使用方式来分发和升级。

### 从 PyPI 安装

包发布到 PyPI 后，其他人可以直接安装：

```powershell
uv tool install 32r4-cli-demo
```

### 直接从 GitHub 安装

在正式发布到 PyPI 之前，也可以直接从仓库安装：

```powershell
uv tool install git+https://github.com/32r4/cli-demo.git
```

## 使用

```powershell
cli --help
cli hello
cli hello Ezra
cli version
cli update
```

### `cli hello [NAME]`

输出一条问候语。

### `cli version`

显示当前 CLI 版本。

### `cli update`

使用 `uv tool` 升级当前 CLI。

```powershell
cli update
cli update --dry-run
```

说明：

- `cli update` 会执行 `uv tool upgrade 32r4-cli-demo`
- `cli update --dry-run` 只展示命令，不执行

## 发布到 PyPI

仓库已经包含 GitHub Actions 发布工作流 [`release.yml`](https://github.com/32r4/cli-demo/blob/main/.github/workflows/release.yml)，使用 PyPI Trusted Publishing。

首次发布前，你还需要在 PyPI 做一次配置：

1. 在 PyPI 创建 `32r4-cli-demo` 项目或添加 Trusted Publisher。
2. Publisher 类型选择 GitHub。
3. 仓库填写 `32r4/cli-demo`。
4. Workflow 文件名填写 `release.yml`。
5. Environment 填写 `pypi`。

配置完成后，发布方式有两种：

```powershell
git tag v0.2.0
git push origin v0.2.0
```

然后在 GitHub 上创建并发布对应 Release；或者直接手动触发 `release` 工作流。

## 本地验证

```powershell
uv sync
uv build
uv run cli --help
uv run cli hello
uv run cli hello Ezra
uv run cli version
uv run cli update
uv run cli update --dry-run
uv run python -m cli_demo --help
```
