跳转正文

yoyoboot repo inspect ​

已知路径或 capability,想取得正式 owner、适用规则和现有验证入口时使用。它组合 owner 与验证计划,查询不会执行检查。

基本用法 ​

text
yoyoboot repo inspect <target> [--repo <path>] [--json]

在 YoyoBoot 源码仓库中运行 ​

读取当前 CLI package 的归属与验证计划。

text
pnpm --dir tools/yoyoboot-cli run cli -- repo inspect tools/yoyoboot-cli/package.json --json

参数 ​

参数必填说明
target是仓库路径或 capability ID;verify-plan 可接受多个路径。
--json否以 JSON 输出完整结果信封,供机器读取。
--help否展示帮助;yoyoboot --help / yoyoboot <command> --help。
--repo <path>否显式指定仓库查找起点;缺省从当前工作目录向上查找。

示例 ​

固定示例仓库中的返回结果 ​

text
yoyoboot repo inspect packages/example/src/service.ts --json

此命令针对固定示例仓库。下面只展示公开字段投影,不是当前 checkout 的完整输出。

json
{
  "command": "repo inspect",
  "status": "ok",
  "data": {
    "schemaVersion": "2.0.0",
    "path": "packages/example/src/service.ts",
    "owner": {
      "id": "packages/example",
      "directory": "packages/example"
    },
    "ruleOwner": {
      "id": "packages/example",
      "directory": "packages/example"
    },
    "rules": [
      {
        "kind": "rules",
        "path": "<rule-source>",
        "owner": "."
      },
      {
        "kind": "rules",
        "path": "<rule-source>",
        "owner": "packages/example"
      }
    ],
    "executionOwner": {
      "directory": "packages/example",
      "name": "@example/package",
      "scripts": {
        "verify": "example-check"
      }
    },
    "sources": [
      {
        "kind": "rules",
        "path": "<rule-source>",
        "owner": "."
      },
      {
        "kind": "rules",
        "path": "<rule-source>",
        "owner": "packages/example"
      },
      {
        "kind": "manifest",
        "path": "packages/example/package.json",
        "owner": "packages/example"
      },
      {
        "kind": "runtime",
        "path": "packages/example/src/service.ts",
        "owner": "packages/example"
      }
    ],
    "verification": {
      "status": "supported",
      "steps": [
        {
          "verification": {
            "command": "pnpm",
            "args": [
              "run",
              "verify"
            ],
            "cwd": "packages/example"
          },
          "changedPaths": [
            "packages/example/src/service.ts"
          ]
        }
      ],
      "uncovered": []
    }
  }
}

返回结果 ​

owner 结果加验证计划。

主要字段 ​

字段说明
command实际结果命令名;Admin 保留子命令名,入口捕获异常时为 cli。
statusok / warn / error;同时检查退出码及诊断码。warn 可以退出 0。
findings[]诊断项包含 code、status、message,可选 detail;机器使用 code 分支,不解析消息。
sourceJSON 顶层命令实现来源,包含 kind / path / owner。
data命令结果;入口捕获失败时可能缺省,部分诊断失败仍保留结果。
data.schemaVersion结果合同版本:2.0.0。
data.source工作树事实来源 { kind: runtime, path: git:working-tree, owner: git }。
data.path解析后的仓库相对路径;使用 capability 查询时,解析为该 capability 的正式来源路径。
data.owner目标最终由谁负责,来源可能是 package manifest、项目文件、规格或正式规则入口。source 给出 owner 的判断依据。
data.owner.id正式 owner 标识;当前仓库合同使用其仓库相对目录,例如 tools/yoyoboot-cli。
data.owner.directory正式 owner 的仓库相对目录;仓库根用 . 表示。
data.owner.source正式 owner 的判断依据,结构为 { kind, path, owner }。
data.ruleOwner距离目标最近的规则边界;可以与事实 owner 不同,没有规则时为 null。source 指向该规则来源。
data.ruleOwner.id最近规则边界的标识,当前使用其仓库相对目录;仅在 ruleOwner 非 null 时存在。
data.ruleOwner.directory最近规则边界的仓库相对目录;仅在 ruleOwner 非 null 时存在。
data.ruleOwner.source该规则的正式来源,结构为 { kind, path, owner };仅在 ruleOwner 非 null 时存在。
data.rules全部适用的祖先规则来源。按返回位置读取,不能只读取最近一层。
data.executionOwner最近可执行 package 的目录、名称和 scripts,source 指向其 manifest;不属于 package 时为 null。该命令不运行 scripts。
data.executionOwner.directory可执行 package 的仓库相对目录;仅在 executionOwner 非 null 时存在。
data.executionOwner.namepackage manifest 声明的包名;仅在 executionOwner 非 null 时存在。
data.executionOwner.scriptsmanifest 声明的脚本映射 { 脚本名: 命令字符串 },可能为空对象;仅在 executionOwner 非 null 时存在。
data.executionOwner.source该 package manifest 的正式来源,结构为 { kind, path, owner };仅在 executionOwner 非 null 时存在。
data.sources判断依据的正式来源,区分 rules、manifest、spec、runtime、docs 和 generated-reference。
data.verification验证计划对象,包含 status / steps / uncovered;owner 成功不意味着计划完整。
data.verification.statussupported / unsupported;存在 unsupported 缺口时 inspect 本身仍可成功。
data.verification.steps[]{ verification: { command, args, cwd, source }, changedPaths }。
data.verification.uncovered[]未覆盖的 { path, code, message }。

使用说明 ​

  • 仓库根使用 pnpm --dir tools/yoyoboot-cli run cli -- <命令参数>;已完成构建时也可使用 node tools/yoyoboot-cli/dist/bin.js <命令参数>。
  • JSON 示例来自固定示例仓库的公开投影,省略实现来源、规则文件位置及大段内容;<...> 是明确的环境占位符。完整字段见返回结果表,实际内容以当前工作树为准。
  • 全局参数严格解析:未知、重复、缺值参数返回退出码 2;--help 输出文本,即使同时指定 --json。
  • 只读;与 owner 使用相同路径、来源和空值语义。不接受 --dry-run。

退出码 ​

Exit code含义
0成功或仅有警告;警告仍需阅读。
2预期失败:参数、仓库或领域条件不满足,或严格检查未通过。
1未预期程序错误。

常见错误 ​

unsupported-capability ​

当前仓库没有暴露所查询的 capability。

处理方式:先运行 yoyoboot repo capabilities --json,使用返回的真实 capability ID 重试。

owner-ambiguous ​

目标存在多个竞争的 owner,无法唯一确定,例如同目录有多个 csproj。

处理方式:明确指定目标项目文件或核实重复的 capability 来源;CLI 不随机选择 owner。

owner-missing ​

没有可以成立的正式 owner 或规则入口。

处理方式:核实并补齐正式 manifest、规格或责任入口,再重试查询。

path-outside-repository ​

目标路径或它的链接指向仓库外。

处理方式:使用仓库内路径,并检查目标路径的符号链接。

相关命令 ​

YoyoBoot · 从真实项目走向可复用能力