# TSL 工具链与验证命令（模板）

本文件提供一份**通用占位模板**，用于在不同 TSL 项目中快速补齐“工具链与如何验证”的关键上下文。

最小必填清单（落地到具体项目时必须补齐，否则文档不可用）：

- 工具名称、可执行命令、安装方式（版本要求可选）
- 至少一个可运行的“最小冒烟”命令（或脚本入口）
- 失败处理约定（含：无法执行时的替代验证方式）

使用方式：

- 在具体项目中复制本模板并把占位符替换为真实信息；
- 或在项目文档中引用本模板，并在项目内提供对应的 `scripts/*` 统一入口脚本。

## 1. TSL 工具链

### 1.1 解释器/编译器（必填）

- 工具名称：`<tsl/tslcli/内部工具名>`
- 可执行命令（统一用 `<tsl>` 表示 TSL 可执行入口）：
  - macOS/Linux：`<tsl>`（例：`tsl` / `sh scripts/tsl.sh`）
  - Windows：`<tsl>`（例：`tsl.exe` / `powershell -File scripts/tsl.ps1`）
- 基本执行方式：`<tsl> <path/to/script.tsl> <args...>`（TSL 通常直接执行脚本文件）
- 版本要求（可选）：`<固定版本或范围，例如：= 3.2.1 / >=3.2,<4.0>`（未知可留空或写
  `N/A`）
- 安装方式：`<内部安装包/路径/IDE 自带/CI 镜像等>`
- 推荐统一入口脚本：`scripts/tsl.{sh,ps1}`（封装参数与环境变量，避免每个任务重复猜测）

### 1.2 运行环境（按需）

- 必要环境变量：`<TSL_HOME> <TSL_LIB_PATH> <LICENSE_PATH> ...`
- 外部依赖：`<数据库/服务/共享目录/网络权限/账户权限>`
- 运行约束：
  - 是否允许联网：`<yes/no>`
  - 是否需要许可证/凭证：`<说明如何在本地与 CI 提供；禁止写入仓库>`
  - 约定：凭证/许可证等敏感信息通过环境变量或 CI
    secrets 注入；文档只写变量名/获取方式，不写明文值。

## 2. 验证命令

> 要求：改动完成后至少能跑通“最小冒烟”；若项目存在测试体系，尽量补到对应层级。

### 2.1 最小冒烟（必须能跑）

- macOS/Linux：`<tsl> <path/to/SmokeTest.tsl> <args...>`
- Windows：`<tsl> <path\\to\\SmokeTest.tsl> <args...>`
- 或统一入口：
  - `sh scripts/smoke.sh`
  - `powershell -File scripts/smoke.ps1`
- Success
  signal（建议写清）：退出码为 0；并给出“成功时的关键输出/产物路径”（例如输出包含某行、或生成某文件）。

### 2.2 单元测试（如有）

- `sh scripts/test.sh`
- 或：`<tsl> <path/to/TestRunner.tsl> <args...>`
- Success signal：退出码为 0；失败时能定位到具体用例/输入。

### 2.3 静态检查/格式化（如有）

- `sh scripts/lint.sh`
- `sh scripts/format.sh`
- Success
  signal：退出码为 0；formatter 二次运行无新增 diff（若项目提供 formatter）。

### 2.4 构建/打包（如有）

- `sh scripts/build.sh`
- Success signal：退出码为 0；产物路径明确且可复现（例如输出目录/包名）。

### 2.5 失败处理约定（必填）

- 只修复与本次改动直接相关的失败；无关失败在输出中说明并隔离。
- 若某验证步骤无法执行（缺环境/缺凭证），必须明确写出原因与替代验证手段（例如最小复现脚本/手动检查清单）。
- 建议在输出中记录：执行的命令、退出码、以及关键日志片段（便于 review 与复现）。
