@lark-project/cli
Version:
飞书项目插件开发工具
51 lines (32 loc) • 2.57 kB
Markdown
# mode=setup:环境检查
## S1:确认认证状态
**不做** `lpm --version` 显式检查——CLI 缺失时 `lpm create` 会 fail-fast 且错误清晰,再多一次探测是冗余。
认证:由 `lpm create` 的运行时错误兜底;遇 auth 错误时逐字转呈 CLI stderr 指引,由用户自行执行 `lpm login` 后重试。
## S2:获取 siteDomain(按优先级,**命中高优先级则跳过其余**)
### 优先级 1 — 被 workflow 编排(对话上下文已有 siteDomain)
如果是 workflow 编排调用(带 `orchestrated=true`),workflow Phase 0 已经把 `siteDomain` 钉到当前对话上下文里
→ 直接沿用该值,**不向用户询问、不重新解析、不读 state.json**。Phase 0 默认不写盘(避免 plugin-dir 之外形成孤儿 cache,详见 workflow `phase-0-context.md`),create 直接从对话上下文取 siteDomain。
### 优先级 2 — 当前目录已有 plugin.config.json
从中读取 `siteDomain` 字段。若非空 → 直接使用。
> 独立调用场景下,此前的入口守卫应已在 `plugin.config.json` 存在时 bail;到这里时该文件通常不存在。保留此分支是兜底(用户绕过守卫手动进入 setup 时仍能工作)。
### 优先级 3 — 从登录态选取(lpm whoami)
跑 `lpm whoami`,**一切以它列出的真实登录站点为准**:
- **列出了已登录站点(≥1 个)** → 把 whoami 列出的**全部真实站点原样呈现给用户挑选**:忽略输出里的 `← 建议` 标记,**不预选、不带"上次登录的是 X,确认用它创建?"这类推荐口吻**;顺序沿用 whoami 输出(有时间戳则最近在前,纯排序)。单站点时也只列那一个让其确认。**不**附"自定义/页面 URL"项——有真实站点时只列真实的。用户选定后用它,**不**落优先级 4。
- **输出「未登录」**(whoami 一个站点都没列出)→ 提示用户先 `lpm login --site-domain <url>` 登录后回到本步重跑,或落优先级 4 用页面 URL 识别域名。
### 优先级 4 — 向用户索要 Meegle 页面 URL
```
请提供一个 Meegle 页面链接(如 https://meego.example.com/project/xxx),用于识别站点域名。
```
从 URL 中解析域名:
- `https://meego.example.com/project/xxx/...` → `https://meego.example.com`
- 提取规则:`new URL(url).origin`
解析后向用户确认:
```
识别到站点域名:https://meego.example.com
确认使用?
```
## 输出
```
✅ 环境就绪
✅ 站点域名:https://meego.example.com
```